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

Int*_*rer 9 python requirements.txt

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

pytz==2017.2
requests==2.18.4
six==1.11.0
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*Mac 15

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

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

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

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


Eng*_*ero 7

请查看pip文档以获取更多信息,但是基本上不需要指定版本。这样做避免头痛虽然,作为指定版本,让您能够保证你不依赖地狱告终。

请注意,如果要创建要部署和pip安装的程序包,则应使用install-requires元数据,而不要依赖Requirements.txt。

另外,养成使用虚拟环境来避免依赖性问题的习惯也是一个好主意,尤其是在开发自己的东西时。Anaconda通过conda create命令提供了一个简单的解决方案,并且virtualenvvirtualenvwrapper更轻量级的解决方案配合使用非常出色。


Dan*_*den 6

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

如果您想指定一个版本但不知道要指定哪个版本,请尝试使用pip freeze,它将转储您当前安装的所有软件包及其版本的列表。