Pip要求输出全局软件包。

15 浏览
0 Comments

Pip要求输出全局软件包。

我有一个用于我的Django项目的虚拟环境,但是当我运行`pip freeze`命令时,我得到的是一个全局的包列表,其中包括太多的包,比如Ubuntu的包和很多不相关的东西。无论虚拟环境是否激活,这种情况都会发生。我的包列表看起来也有点少,所以我想知道venv是否一直在工作。\n我遇到了什么问题?

0
0 Comments

问题的出现原因是作者在评论中看到了一个简洁的选项,但是这个选项没有被明确提出来。为了避免其他人也错过这个选项,作者将其作为一个单独的答案发布,并进行了一些修改。

解决方法之一是在运行带有system-site-packages的虚拟环境时,使用--local标志来添加pip freeze。例如,如果你运行了以下命令创建虚拟环境:

py -m venv --system-site-packages env

为了确保你的requirements.txt中不包含所有系统依赖项,只需运行以下命令:

python -m pip freeze --local > requirements.txt

另一个稍微复杂一些的选项是手动修改位于虚拟环境库中的pyvenv.cfg文件。找到include-system-site-packages = true/false这一行,并根据需要进行手动更改。

感谢这个解决方法,对我很有帮助。

0
0 Comments

Pip requirements outputting global packages问题的出现原因是虚拟环境可以访问系统的site-packages目录,这是正常的情况。解决方法有两种:重新创建虚拟环境或者添加一个no-global-site-packages.txt文件告诉pip忽略全局site-packages。

如果想重新创建虚拟环境,可以删除原来的环境文件夹,然后重新创建。如果想检查虚拟环境是否使用了system-site-packages,可以通过检查首次freeze时是否包含它们来判断。检查是否存在no-global-site-packages.txt文件可以提供相关信息。

有一个no-global-site-packages.txt文件,但是我的requirements文件不应该包含rhythmbox-ubuntuone==3.0.0 sessioninstaller==0.0.0 simplejson==2.3.2 software-center-aptd-plugins==0.0.0 ssh==1.7.14 system-service==0.1.6 ubuntuone-couch==0.3.0 ubuntuone-installer==3.0.2 ubuntuone-storage-protocol==3.0.2。这个问题让我感到困惑。

尝试使用pip freeze --local命令和sudo pip install --upgrade pip virtualenv命令是否有帮助。重新设置环境似乎可以生成一个更小且正确的requirements文件。除了使用pip之外,还有其他评估Django文件的要求的方法吗?

感谢提供--local选项来冻结pip的requirements。请将这个信息包含在回答中,因为我很久以来一直在寻找这个选项。

0