web-dev-qa-db-ja.com

Python要件ファイルでバージョンを指定する必要がありますか?

Pythonコードベース用のrequirements.txtファイルがあります。このファイルにはすべて指定されています:

pytz==2017.2
requests==2.18.4
six==1.11.0

新しいパッケージを追加しています。そのバージョンをリストする必要がありますか?はいの場合、指定するバージョンを選択するにはどうすればよいですか?

17

詳細は pip docs を確認してください。ただし、基本的にバージョンを指定する必要はありません。そうすることでcanバージョンの指定により、依存関係の地獄に陥らないことを保証できるため、頭痛の種を回避できます。

デプロイしてpipでインストールするパッケージを作成する場合は、requirements.txtに依存する代わりに install-requires metadata を使用する必要があります。

また、特に独自のものを開発する場合は、依存関係の問題を回避するために仮想環境を使用する習慣をつけることをお勧めします。 Anacondaconda create コマンド、および virtualenvvirtualenvwrapper と併用すると軽量のソリューションになります。別のソリューション pipenv は非常に人気があります。

12
Engineero

バージョンの指定は必須ではありませんが、将来的には役立ちます。一部のバージョンのパッケージは、他のパッケージやそれぞれのバージョンではうまく機能しません。将来の変化がこれらの相互関係にどのように影響するかを予測することは困難です。これが、どのバージョンの相互関係が機能するかを示すスナップショットを(requirements.txtに)時間内に作成することが非常に有益である理由です。

使用しているパッケージのバージョンを含むrequirements.txtファイルを作成するには、次の手順を実行します。コンソール/ターミナルで、requirement.txtを作成する場所にcdして、次のように入力します。

pip freeze > requirements.txt

これにより、それぞれのバージョンでインストールしたパッケージを含むrequirement.txtファイルが自動的に生成されます。

ヒント-作業する個々のプロジェクトごとに仮想環境を使用することを目指す必要があります。これにより、他のプロジェクトに影響を与えることなく、特定のバージョンのパッケージをインストールしてインストールするための「バブル」が作成されます。パッケージとバージョンはプロジェクト固有に保たれるので、将来的に多くの頭痛の種を救うでしょう。 Anacondas仮想環境 を使用することをお勧めします。

6
Tom Mac

いいえ、バージョンを指定する必要はありません。ただし、指定することをお勧めします。

バージョンを指定したいが、どのバージョンを指定するかわからない場合は、pip freezeを使用してみてください。これにより、現在インストールしているすべてのパッケージとそのバージョンのリストが表示されます。

3
Daniel Pryden