かごもく
Pythonのパッケージ管理ツール
2020-05-23 Zoom
森下功啓
1
https://kagoben.connpass.com/event/176282/
自己紹介
リリースしてきたもの
• 鳴き声から鳥の種類を当てるソフトウェア
• https://github.com/KatsuhiroMorishita/birdsong_project
• 阿蘇の雲海予報を行う「うんかいったー」
• https://twitter.com/unkaitter
2
名前
専門
職場
SNS Facebook https://www.facebook.com/katsuhiro.morishita
Github https://github.com/KatsuhiroMorishita
SlideShare https://www.slideshare.net/katsuhiromorishita/
衛星測位やセンサー使う方
森下功啓 @KatsuhiroKU
熊本高専八代キャンパス
Pythonの紹介
• ニシキヘビがシンボル
• Rubyと同じくインタプリタ言語
• ライブラリが豊富
• 有名どころ: numpy, scipy, matplotlib, pandas, requests
• 科学・工学用途に人気
• Webでも使われている
• Google Colaboratoryを使ってオンライン上で機械学習ぽちぽち
• Python 2はサポート切れ
• 今はPython 3
3
a = 100 # ;がいらない
for x in range(100):
print(a) # インデントがないと、エラー
Pythonのインストール
• Linux系だと最初からPythonはある
• Windowsは、インストールするか、Ubuntu立ち上げるか
• Macはhomebrewでインストールがお勧め
4
https://www.python.org/downloads/windows/
Windowsの機械学習勢
がAnacondaを使うこ
ともあるが、省略
Macで複数バージョンのインター
プリターを試したいなら、brew
でpyenvを入れて、pyenvでイン
タープリターを入れてください。
ただし、ライブラリを入れる際に
ビルドで失敗しやすいという罠が
あります。
本資料ご利用上の注意
Pythonのパッケージ管理ツールや仮想環境作成ツールは紆余曲
折を経て様々なものがリリースされています。
これで絶対間違いない、というものは無さそう。
個人的にはこれがお勧めという方法を紹介します。
5
pipでパッケージ(ライブラリ)のインストール
• pipはPython 3.4以降に同梱
• ライブラリのインストールには、pipを使う
• pip install numpy
• PyPIからライブラリがダウンロードされる
• アンインストール
• pip uninstall numpy
• pip freeze でインストールされているライブラリ一覧
• ファイルでインストール(バージョン指定もできる)
• pip install -r requirements.txt
6
かなり古いなど特殊な環境で
は、easy_installでまずpipを
入れることもある
pipでアウトローなライブラリをインストール
• たまに、インストール時に.cファイルのコンパイルが求められた
が、ビルドに失敗することがある。環境を作るのが面倒。
• unofficialサイトを使う
• https://www.lfd.uci.edu/~gohlke/pythonlibs/
• ビルド済みのwhlファイルが配布されている
• インストール例
• pip install numpy-1.18.4+mkl-cp37-cp37m-win_amd64.whl
7
Windowsのみ対応
Windowsでランチャーpy.exeはインストールしてもPythonインタープ
リタへのパスを通さなかった場合は、py -m pip insntall ~と入力
仮想環境の作り方
• インストールしたPythonインタープリタで様々なプログラムを作
成していくと、ライブラリのバージョン依存問題に直面する
• Aに対応したらBが失敗する
• 仮想環境を作りましょう
• 仮想環境とは、インタープリタ本体は共有して、ライブラリを完
全に切り分けた環境を作る仕組み
• venvを使います
• venvはPython 3.3でvirtualenvが公式に取り込まれたもの
• virtualenvはvirtualenvでまだ存続
• 挙動に差はあるものの、どのインタープリタのどのvenvを使っているとい
う自覚があれば、venvでOK
8
venvコマンドと実行結果
• コマンド例
• venv bar
9
Windowsでランチャーpy.exeはインストールしてもPythonインタープ
リタへのパスを通さなかった場合は、py -m venv ~と入力
環境名
作成されたファイル達@Windows
同じ名前のフォル
ダが作成される
仮想環境へ切り替え@Windows
• 作った仮想環境に実行環境を切り替える
• 環境名¥Scriptsの中に、activate.batがあるので、これを実行
• 仮想環境を有効にするコマンド例
• bar¥Scripts¥activate
• 仮想環境を抜けるコマンド
• deactivate
10
*Mac, Linuxの方は下記サイトを参考にしてください。
https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e
メモ
• pyvenv
• pyvenvはPython3.3と3.4で推奨されていた仮想環境作成ツール
• Python3.5以降ではvenvが推奨されている
• 主にMacで複数のPythonインタープリタを切り替えるpyenvと、この
pyvenvを混同しているブログがあり、注意
• pipenv
• ライブラリ管理と仮想環境管理を同時にやってくれる
• pipでできない依存関係も管理してくれる
• 登場して間もないが、既に廃れつつある
• コマンドの履歴が使えないのが個人的に痛い
• pipで入れたものはpipenvの管轄外となる
• 依存関係解決のため、動作がやや遅い
• Poetryの方が良いらしい
11
poetry入れてみた
• get-poetry.pyをGithubからダウンロード
• https://github.com/python-poetry/poetry
• py -3.8 get-poetry.py でインストールした
• PATHを修正するかと聞かれたので、とりあえずNO
• 通した方が良かった
• C:¥Users¥morishita¥.poetry¥bin に入った
• poetry.batを見る限り、立ち上がっている仮想環境で実行される
• インストールに使うインタープリターはどれでも良さそう
• バージョンの確認
• C:¥Users¥morishita¥.poetry¥bin¥poetry --version
• 使い心地は・・・まだ不明
12
参考文献
• pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。
• https://qiita.com/KRiver1/items/c1788e616b77a9bad4dd
• 網羅的で良い
• WindowsユーザーはPythonランチャーの存在を意識しましょう
• https://gammasoft.jp/blog/find-out-python-launcher/
• pyenvが必要かどうかフローチャート
• https://qiita.com/shibukawa/items/0daab479a2fd2cb8a0e7
• 2020 年の Python パッケージ管理ベストプラクティス
• https://qiita.com/sk217/items/43c994640f4843a18dbe
• poetry推しが強い
• Pythonのパッケージ周りのベストプラクティスを理解する
• https://www.m3tech.blog/entry/python-packaging
• pipenvと、管理ツールの歴史について詳しい
• Pipenvでよく出喰わす問題
• https://pipenv-ja.readthedocs.io/ja/translate-ja/diagnose.html
• 清水川さんのscrapbox
• https://scrapbox.io/shimizukawa/Poetry
• 「パッケージ作るならPoetry使う。 パッケージつくらないなら [venv]と[pip]がいい。」
• PipenvでPythonの依存関係の管理は楽になったか?
• https://techblog.zozo.com/entry/pipenv-make-it-easy-to-manage-dependencies-in-python13

Pythonのパッケージ管理ツールの話@2020