« ^ »Pythonのサードパーティパッケージの歩き方所要時間: 約 4分 ### Pythonのサードパーティパッケージの歩き方 --- 歩き方 --- サードパーティパッケージを 1. 使う 2. 読む 3. 書く 4. まとめ --- # 使う --- ### サードパーティパッケージとは - 標準ライブラリ以外のライブラリ / パッケージ - 作者は一般の開発者 - 完成度は様々 --- ### なぜ使うのか? - 作ってあるものを使ったほうが早い - 完成度が高いものも結構ある --- どうやって使うのか? --- ### pip - パッケージマネージャー - 公式 - 通常 https://pypi.python.org/pypi からパッケージをインストールする --- ### 使用例 サードパーティパッケージをインストールする ``` python -m pip install requests ``` インストールしたサードパーティパッケージを使う ``` >>> import requests >>> resp = requests.get("http://example.com") ``` (例としてrequestsを使用) --- プロジェクト間でバージョンが食い違うことがある | Project | 必要なrequestsのバージョン | |:-|:-:| | Project X | 2.27.1 | | Project Y | 2.26.0 | 1つの環境にインストールできるパッケージのバージョンは1つのみ --- どうすれば良いか? --- ### venv - 環境分離ツール - この分離された環境を仮想環境と言う - 公式 --- ### 使用例 仮想環境の作成 ``` python -m venv project_x ``` - project_xの部分は環境名 - 環境名のディレクトリが作成される - ディレクトリ名で使用可能な文字を任意に指定できる --- ### 使用例 仮想環境の活性化 (bashの場合) ```bash source project_x/bin/activate ``` 仮想環境の非活性化 ```bash deactivate ``` --- - 仮想環境を活性化した状態でpipを用いてパッケージをインストールすると その環境にパッケージとその依存パッケージがインストールされる - 複数の仮想環境を作ることで異なるバージョンのパッケージを入れられる --- 昔は別のツールを使用していた 昔話が気になる人向け↓ >>> ### easy_install.py >>> ### virtualenv --- 最近ではpipやvenv以外にも 別のツールが登場している 最近の話が気になる人向け↓ >>> ### poetry >>> ### pyflow >>> ### flit --- # 読む --- ### なぜ読むのか? - 処理がイメージしやすくなる なんでもかんでもブラックボックスにさせない。 - 実装の参考になる 人気のパッケージのコードのクオリティは高い。 自分でコードを書くときの指針になる。 - ソースを読む心理障壁が下がる --- ### どうやって読むのか ? - 多くのパッケージはOSS ソースコードは公開されている。 インストールしているのであれば site-packages配下にファイルが存在している。 - デバッガーで追いかける - breakpoint()を仕込み実行することで該当行にくるとpdbが起動する。 - l, n, s, c, u程度のコマンドさえ覚えておけば良い。 (昔話が気になる人向け↓) >>> 以前はbreakpointではなくpdbモジュールのset_trace()関数を記述していた。 ``` def foo(): n = 1 + 1 import pdb; pdb.set_trace() return n ``` --- ### 読むコツ - 知りたい事柄をあらかじめ明確にする コードが多いことが多く、漠然と読んでも理解が深まらない。 すべてを知ろうとしない。 - 読んだ内容をまとめていく 今読んで理解した内容は1ヶ月後には忘れている。 --- # 書く --- ### なぜ書くのか? - 再利用性のため 書かないとファイルをコピーしてつかう羽目になる - パッケージとして共有することで第三者も利用できる --- どうやって書くのか? --- ### setup.pyを追加する ``` #!/usr/bin/env python from distutils.core import setup setup( name='package_name, version='1.0', description='Package description text', author='TakesxiSximada', author_email='test@example.com', url='https://example.com', packages=[], ) ``` --- ### インストールする ``` pip install ./ ``` --- ### Editable Install ``` pip install -e ./ ``` - pip install --editable - site-packagesにコードをコピーすることなくインストールしたような状態になる - localにソースコードがあることが前提 --- ### パッケージファイルの作成 sdist ``` python setup.py sdist ``` wheel ``` python setup.py bdist_wheel ``` --- # pypiに公開する --- ### twine twine自体のインストール ``` pip install twine ``` パッケージのアップロード ``` twine upload ``` --- ### まとめ Pythonのサードパーティパッケージの扱い方を一通り確認した。 1. pipコマンドでパッケージをインストールする 2. サードパーティパッケージの多くはOSS デバッガーを用いると理解しやすい 3. 自作パッケージはPyPIに公開できる --- # Thank you