(最近はほぼPython触っていないが、色々考えた結果忘れないうちにまとめておいた方が良い気がしたのでメモしておく)
- pipとpipenvとpoetryの技術的・歴史的背景とその展望
- Poetry の scripts はタスクランナー機能ではない
- Poetryの
script
機能周りのよくある誤解について整理出来る - アプリケーション開発でタスクランナー機能が欲しければPipenv, パッケージやライブラリのような単位のものを開発するのであればPoetryみたいな使い分けをすれば良さそう?
- Poetryの
各ツール:
- pyenv
- Python自体のバージョンの切り替えに使える
- 時々シェルが変なエラーを出したりするのが難点(?)
- pyenvの環境下で作った仮想環境を管理するプラグインpyenv-virtualenvなども組み合わせると便利かもしれない
- miniforgeやmambaforgeもインストール可能であり、miniforgeやmambaforgeで作ったconda仮想環境も一緒に管理出来る
- Pipenv
- (若干語弊があるが)nodeでいうnpmやyarnのような感覚でPythonの仮想環境の管理が出来る
- Pipfileにはパッケージの最小限の依存関係+スクリプト(タスクランナー)などを記述出来る
- Pipefile.lockにはインストールされている全パッケージの詳細なバージョン等の情報と詳細な依存関係などが記述され、 lockファイルによって仮想環境を完全に再現出来る
- 参考記事: pipenvの導入(requirements.txtも作る)のようにしてpip用の
requirements.txt
の生成も出来る
- (若干語弊があるが)nodeでいうnpmやyarnのような感覚でPythonの仮想環境の管理が出来る
- Poetry
- 一見するとPipenvのような感じだがタスクランナー機能は無く、パッケージ開発に特化している印象
- そこそこ"PipenvからPoetryに移行した"という旨の記事が存在するが、Poetryの正しい使い方では無いような気がする
- 先述の通り、Poetry の scripts はタスクランナー機能ではないも参照のこと
- Miniconda
- ミニマルな構成でPython + conda環境をインストール出来る。ほとんど何もはいっていないスリムなAnaconda、といった感じ。
- condaコマンドさえあれば任意のバージョンのPythonのconda仮想環境を作れるので、昔はよく使っていた
- デフォルトチャンネルがAnaconda用リポジトリなので、商用利用するときは使うリポジトリは変えないと利用規約に抵触するおそれがあるので注意
- ちなみに、miniconda自体をpyenvからインストール可能
- Miniforge
- ざっくり言うとminicondaのデフォルトチャンネルが
conda-forge
になっているもの - condaの高速な代替コマンドである
mamba
も使えるようになっている派生版: mambaforgeもある - miniforge, mambaforgeもpyenvからインストール可能 ← 参考
- ざっくり言うとminicondaのデフォルトチャンネルが
Docker
- python - Docker official Image
- 一般的にdebian slimベースのものが実用的
- イメージサイズを極限まで削りたいときはalpineベースのも便利だったり
- 開発環境から生成した(←Pipenvを使ったり、
pip freeze
したり)requirements.txt
とソースコードをCOPYして使うなどすると、 所望のバージョンで余計なものがほぼ入っていない、再現性の高い環境構築が出来る
- condaforge/miniforge3, condaforge/mambaforge
- condaベースで開発しているときは使ったり、元になっているDockerfileを参考にしたりときもある
- jupyter
- datascience-notebook,
scipy-notebook,
tensorflow-notebookなど、
データ分析や機械学習などに便利な環境を楽に立ち上げられる
- カスタマイズ不要であれば非常に楽
- datascience-notebook,
scipy-notebook,
tensorflow-notebookなど、
データ分析や機械学習などに便利な環境を楽に立ち上げられる
TODO