pip freeze >requirements.txt 包括 virtualenv 中所有系统安装的软件包

问题描述 投票:0回答:2

背景故事,我对 Python 和一般开发相对较新,并且愚蠢地将项目特定的包安装为系统包。现在,当我尝试在 virtualenvs 内为特定项目创建 requests.txt 文件时,这给我带来了问题。

例如,我已经在系统范围内安装了 Kivy,每次我使用需求文件创建新的环境时,我都会得到以下内容(是的,环境处于活动状态):

$ pip freeze > requirements.txt
$ cat requirements.txt
Kivy==1.9.1
Pillow==2.6.1
Pygments==2.0.1
chardet==2.3.0
colorama==0.3.2
docutils==0.12
html5lib==0.999
kazam==1.4.5
pygobject==3.14.0
python-apt==0.9.3.12
python-debian==0.1.27
pyxdg==0.25
requests==2.4.3
roman==2.0.0
six==1.8.0
urllib3==1.9.1
wheel==0.24.0

我还尝试卸载 Kivy 等(在这里要小心谨慎,不想删除重要的操作系统软件包),但得到以下输出:

$ pip uninstall kivy 
Not uninstalling Kivy at /usr/lib/python3/dist-packages, owned by OS

所以我的问题是这样的: 如何将我的 python 软件包恢复为默认值,只安装必要的系统软件包(几乎就像全新的 python 安装),那么如何防止 virtualenv 中的requirements.txt 文件,包括系统范围安装的软件包(我'将来会更好地使用 evn,所以不应该有太多系统范围的软件包)

我也有兴趣找出为什么

pip unistall kivy
不起作用(是的,我也尝试过以root身份运行它)

运行 Debian 8,如果这有什么区别的话

希望这是有道理的,并感谢您提出的任何建议。

编辑:所以我认为我一直在做错整件事,一旦我创建了环境,我就一直使用

pip install
而不是
env/bin/pip install
。除非我弄错了,否则这就是这些软件包在全球范围内安装的原因。需求文件也是如此。

python virtualenv
2个回答
25
投票

您可以使用

-l
(或
--local
)参数来冻结每个 virtualenv 中的本地包

pip freeze --local > requirements.txt 

0
投票

如果您使用虚拟环境来管理 Python 包,请确保在继续之前激活它。

© www.soinside.com 2019 - 2024. All rights reserved.