我有一个Python代码库的requirements.txt文件。该文件具有指定的所有内容:
pytz==2017.2
requests==2.18.4
six==1.11.0
我要添加一个新软件包。我应该列出它的版本吗?如果是,如何选择要指定的版本?
答案 0 :(得分:3)
查看pip docs以获得更多信息,但是基本上您不需要指定版本。这么做 可以避免头痛,因为指定版本可以确保您不会陷入依赖地狱。
请注意,如果要创建要部署并通过pip安装的软件包,则应使用install-requires metadata而不是依靠requirements.txt。
此外,养成使用虚拟环境来避免依赖性问题的习惯也是一个好主意,尤其是在开发自己的东西时。 Anaconda使用conda create
命令提供了一个简单的解决方案,而virtualenv
与virtualenvwrapper
一起使用时,可以实现更轻量的解决方案。
答案 1 :(得分:2)
尽管将来确实会有很大帮助,但是指定版本不是必需的。某些版本的软件包不能与其他软件包及其各自的版本很好地配合使用。很难预测未来的变化将如何影响这些相互关系。这就是为什么及时(在您的requirements.txt中)创建快照以显示哪个版本的相互关系起作用的原因非常有益。
要创建一个require.txt文件,其中包括您正在使用的软件包的版本,请执行以下操作。在控制台/终端cd中,输入您想要的require.txt所在的位置,然后输入:
pip freeze > requirements.txt
这将自动生成一个require.txt文件,其中包括您已安装的软件包及其相应版本。
提示-您应该致力于为要处理的每个项目使用虚拟环境。这会为您创建一个“气泡”,供您在其中工作并安装特定的软件包版本,而不会影响您的其他项目。将来,由于您的软件包和版本将保持特定于项目的状态,这将使您省去很多麻烦。我建议使用Anacondas virtual environment。
答案 2 :(得分:1)
否,无需指定版本。不过,最好指定一个。
如果要指定版本,但不知道要指定哪个版本,请尝试使用pip freeze
,这将转储当前已安装的所有软件包及其版本的列表。 / p>