PPP3: venvとpip
Chapter 03 Pythonプロジェクトの構成とパッケージ作成
パッケージングにもドキュメントがあるのね
Python Packaging User Guide — Python Packaging User Guide
ってないと困るだろうけど
読むべきものが多いのもそれはそれで大変
必要なところをつまみ食い的に読むのが苦手なので
03-02-01 venvで独立した環境を作る
軽く使ってみるレベルでは出てきてたけどここで詳しい説明
案件ごとに専用の環境を作って必要なモジュールだけをインストールすることで
いろんなメリットが出る、というものなんだけど
vscode使ってると仮想環境を有効にしたとたんpylintがないよ、って言われて
じゃあ入れる、ってやるとせっかくの専用環境にvscode用のpylintが入ってしまう
これっておかしくない?
なぜvscodeを走らせる環境とプログラムを走らせる環境が同一になってしまうのか
vscodeはvscode専用の環境で走ってくれませんか
設定とかあるのかと思ったけど検索してもpylintがないって言われるので入れます、
みたいなものばっかりひっかかるし
みんなおかしいと思ってないのかなあ
なにかへんな設定になってたり見落としたり考え違いしてたりするんだろうか
プロジェクトごとにpylintのバージョンが違うから、とかあるのかなあ
あるの?
それにしてもそれが成果物の動作環境に入っていなければいけない意味はないし
入っちゃうけどそれくらいなら気にしない、とかそういうレベル?
ソースの編集はホスト側のvscodeでやって動かすのは仮想マシン上の仮想環境のみ、
ってやればよさそうではあるんだけどF5でデバッグってわけにいかなくなるし(たぶん
venv --system-site-packages
で仮想環境を作れば
再度pylintをインストールするようなことはなくなるかもしれないけど
venvを使う意味が半減してそうだし
vscodeが仮想環境を認識しなければ(検出したときにNoを選択するとか
ワークスペースフォルダ直下以外でvenvを作った時とか)
環境がいっしょくたになることはないみたいだけど
ただしそのかわりvscodeが勝手にactivateしてくれたりはしなくなる
ような感じ(ちゃんと確かめてない
わからん
03-02-02 pipでパッケージをインストールする
wheelパッケージをインストールしておけば、pipのキャッシュを最大限に活用できるようになります。
わからんけど入れておくのがよさそう
ソースコードからのインストールには、
-e
(--editable
)オプションも使用できます。これは、ソースコードをコピーインストールせずに、インプレースでインストールする仕組みです。開発中のソースコードをeditableでインストールすれば、コードを書き換えるたびにインストールしなおす必要はありません。
なるほど
HFP2でvsearchのパッケージを作ったときに、これ修正のたびに
インストールしなおすの?って思ったけどこうすればいいんだ
リポジトリーをcloneしてインストールする場合、リポジトリーのURLの前に
git+
のようにリポジトリー種別を追加してpip install
を実行します。
へー
例に倣って
(winenv) $ pip install git+https://github.com/shimizukawa/logfilter
Collecting git+https://github.com/shimizukawa/logfilter
Cloning https://github.com/shimizukawa/logfilter to c:\users\takahiro\appdata\local\temp\pip-req-build-yvd5z00o
Requirement already satisfied: setuptools in c:\users\takahiro\documents\study\ppp3\pipwork\winenv\lib\site-packages (from logfilter==0.9.3) (40.8.0)
Installing collected packages: logfilter
Running setup.py install for logfilter ... done
Successfully installed logfilter-0.9.3
できた
「cloneして」ってなんだろうと思ったけど
単にリポジトリからダウンロードして、くらいの意味に取っておけば
temp
フォルダからは消えてるしlogfilter
とか.git
みたいなフォルダもできてなさそう
-eと併用するとcloneが残るみたいだけどよくわかってない
あまり使うことはなさそうな気がする
(winenv) $ pip install -e git+https://github.com/shimizukawa/logfilter#egg=logfilter
Obtaining logfilter from git+https://github.com/shimizukawa/logfilter#egg=logfilter
Cloning https://github.com/shimizukawa/logfilter to c:\users\takahiro\documents\study\ppp3\pipwork\winenv\src\logfilter
Requirement already satisfied: setuptools in c:\users\takahiro\documents\study\ppp3\pipwork\winenv\lib\site-packages (from logfilter) (40.8.0)
Installing collected packages: logfilter
Running setup.py develop for logfilter
Successfully installed logfilter
pip install -e ./logfilter-0.9.3
editableでインストール
pip install git+https://github.com/shimizukawa/logfilter
gitでクローンしてインストール
pip install -r requirement.txt
requirementsフォーマットのファイルで指定
pip freeze > requirement.txt
requirementsファイルを作成
pip uninstall
では指定したパッケージしか消えない