Python 需求文件是否必须指定版本?

Does Python requirements file have to specify version?

我有一个 requirements.txt 文件用于 Python 代码库。该文件指定了所有内容:

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

我正在添加一个新包。我应该列出它的版本吗?如果是,我如何选择一个版本来指定?

查看 pip docs 了解更多信息,但基本上您不需要指定版本。这样做 可以 避免麻烦,因为指定版本可以保证您不会陷入依赖地狱。

请注意,如果您要创建要部署和 pip 安装的包,则应使用 install-requires metadata 而不是依赖 requirements.txt。

此外,养成使用虚拟环境的习惯以避免依赖性问题是个好主意,尤其是在开发自己的东西时。 Anaconda offers a simple solution with the conda create command, and virtualenv works great with virtualenvwrapper for a lighter-weight solution. Another solution, pipenv,人气很高

不,不需要指定版本。不过,指定一个可能是个好主意。

如果你想指定一个版本但不知道要指定哪个版本,请尝试使用 pip freeze,这将转储出你当前安装的所有软件包的列表以及它们的版本是什么.

指定版本不是必需的,但它在将来会有很大帮助。某些版本的包不能与其他包及其各自的版本一起很好地工作。很难预测未来的变化将如何影响这些相互关系。这就是为什么及时创建快照(在您的 requirements.txt 中)显示哪个版本相互关系有效的原因是非常有益的。

要创建包含您正在使用的包版本的 requirements.txt 文件,请执行以下操作。在您的控制台/终端 cd 到您希望 requirement.txt 所在的位置并输入:

pip freeze > requirements.txt

这将自动生成一个 requirement.txt 文件,其中包含您安装的软件包及其各自的版本。

提示 - 您应该致力于为您将要处理的每个单独项目使用虚拟环境。这会创建一个 'bubble' 供您在其中工作并在其中安装特定的包版本,而不会影响您的其他项目。由于您的包和版本将保持项目特定,因此将来会为您省去很多麻烦。我建议使用 Anacondas virtual environment.