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
以上です。みなさんの参考になれば嬉しいです。