Pythonのパッケージ管理は何を利用していらっしゃいますか?
私はPipenvです。Pipenvの操作はわかりやすく、とても助かります。
Pipenvの解説は@y-tsutsuさんの「Pipenvを使ったPython開発まとめ」が大変参考になります
上記記事で取り上げていない、Pipenvの便利な機能の紹介を本記事でします。
取り上げた内容は以下の2本です。
- Pipenvを使って、システムに直接インストールする
- Pipenvで使っているパッケージを
requirements.txt
に出力する
Pipenvでシステムに直接インストールする - コンテナで利用するときなど
コンテナ環境を用意してPythonを実行する場合、すでにコンテナによって隔離されているのでPythonの仮想環境を作成する必要はありません。--system
オプションで直接システムに直接インストールしましょう。
$ pipenv install --system
Pipfile.lock
に指定されたバージョンをインストールするsync
でも利用できます。
$ pipenv sync --system
Pipfile.lockで指定されたバージョンが古く、pipenv install
でインストールしたバージョンと違った時、インストールをやめることもできます。
$ pipenv install --system --deploy
こうすることで古いパッケージを利用したままデプロイしてしまうのを回避できます。ただこれは良い点悪い点があると思うので、各自で判断してください。
Dockerfile サンプル
FROM python:3.8
WORKDIR /app
COPY . /app
RUN pip install pipenv && \
pipenv sync --system && \
pip uninstall --yes pipenv
requirements.txt を出力する
互換性のためにrequirements.txt
を出力する必要があるときもあります。
lock -r
でrequirements.txt
を作成できます。
$ pipenv requirements > requirements.txt
開発環境を含めて出力する場合は以下になります。
$ pipenv requirements --dev > requirements.txt
本番用とdev用のrequirements.txt
を分割する方法もあります。--dev-only
オプションを利用します。
$ pipenv requirements > requirements.txt
$ pipenv requirements --dev-only > dev-requirements.txt
以上です。みなさんの参考になれば嬉しいです。