venv中的pip install requirements.txt:如何忽略不同版本的系统站点软件包?

时间:2019-04-03 17:52:58

标签: python-3.x pip python-venv requirements.txt

我处于共享系统站点程序包(在Python 3.5中使用venv创建)的虚拟环境中,并且我想将给定requirements.txt中的所有程序包安装到该venv中。系统范围的python安装是只读的,因此我无法对其进行修改。

例如,现在,我的requirements.txt列出了许多其他信息,

SomePackage==2.0

(根据要求),而系统安装中已经包含SomePackage-1.0。因此,Pip尝试卸载SomePackage-1.0以升级到版本2.0。但是,此操作失败,因为系统级python安装是只读的。

如果安装的软件包的版本不同于所需的软件包,而只是将所需的版本安装到venv中,是否可以通过一种方式pip install -r requirements.txt忽略已安装的软件包?

我想这类似于逐个安装每个软件包,并在每个软件包已经以不同于所需版本的版本存在时使用--ignore-installed。但是,这似乎很麻烦。有更好的方法吗?

请注意,我正在使用带有共享系统站点软件包的venv,因为我希望避免在每次创建新的venv时安装多个大型软件包。因此,我不想切换到完全隔离的venv,这当然不会出现上述问题。

任何提示将不胜感激!非常感谢!

1 个答案:

答案 0 :(得分:0)

要仅列出venv中项目所需的软件包,而不列出计算机中的所有全局软件包,请首先激活虚拟环境,并从(env) strong>运行pip freeze > requirements.txt命令。

因此,您将严格列出指定项目所需的软件包。