pip列出在活跃的虚拟环境中的全局包

12 浏览
0 Comments

pip列出在活跃的虚拟环境中的全局包

将pip从1.4.x升级到1.5后,pip freeze输出的是我全局安装的(系统)软件包列表,而不是安装在虚拟环境中的软件包。我尝试过再次降级到1.4,但这并没有解决我的问题。这与这个问题有些相似,只是在预期的几个月里一直正常工作。有没有办法进行调试和/或修复这个问题?\n虚拟环境似乎没有任何效果。在其中安装的软件包也会在全局范围内安装。

0
0 Comments

问题的原因是,即使你正确地安装了虚拟环境,但如果全局包对于你的虚拟环境可见,pip仍然会列出所有的包,除非你使用pip list --local命令。这在这里有所讨论。

有人对此表示质疑,并认为只有在创建虚拟环境时使用了--system-site-packages参数才是正确的。他最终选择了删除并重新创建虚拟环境。

根据pip文档,这是正确的,并且它也能正常工作。当然,只有在使用--system-site-packages参数创建了虚拟环境时才是正确的。这就是我回答中提到的"but with global site packages visible"的意思。这里的"but"与默认的虚拟环境创建方式(通过virtualenvwrapper)形成对比,后者与全局包是隔离的。

解决方法是在创建虚拟环境时使用--system-site-packages参数,或者使用pip list --local命令来列出仅在当前虚拟环境中安装的包。

0
0 Comments

问题原因:pip在安装包时,错误地将包安装到了全局位置,而不是已激活的虚拟环境中。

解决方法:修改虚拟环境中pip脚本的shebang,将其指向正确的Python安装位置。

具体解决方法可参考以下链接:pip installing in global site-packages instead of virtualenv

0