![](/img/trans.png)
[英]Django pip freeze > requirements.txt not getting the exact packages installed in the virtual env
[英]pip freeze > requirements.txt including all system installed packages inside virtualenv
有点背景故事,我对Python和开发一般都比较陌生,并且愚蠢地将项目特定的软件包安装为系统软件包。 现在,在virtualenvs内部尝试为特定项目创建requirements.txt文件时,这会引起我的问题。
例如,我已经安装了Kivy系统,每次我创建一个带有需求文件的新环境时我都会得到以下内容(是的,env是活动的):
$ 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,如果这有任何区别
希望这是有道理的,并感谢您的任何建议。
编辑:所以我认为我做错了这一切,一旦我创建了env我一直在使用pip install
而不是env/bin/pip install
。 除非我弄错了,否则这就是全球安装软件包的原因。 需求文件也是如此。
您可以使用-l
(或--local
)参数冻结每个virtualenv中的本地包
pip freeze --local > requirements.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.