背景故事,我对 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 包,请确保在继续之前激活它。