环境:
win10
问题描述:
我们使用虚拟环境就是想有一个单独的干净的开发环境,但是我发现我的电脑在激活的虚拟环境中 pip list 命令仍然是全局包。
这个是我的全局 pip list ,没有安装 Django

这个是通过 pycharm 查看的当前虚拟环境的包,已经安装了 Django

但是当我们在命令行中激活这个虚拟环境并使用 pip list 查看安装的包时,显示的是全局的包,并且我们运行项目代码时会提示找不到 Django。
问题分析:
很显然虚拟环境自己的包已经建立起来了,但是使用的时候总是使用全局包,所以我怀疑是虚拟环境的设置中某一项设置指向的是全局存放包的地址,而不是虚拟环境自己存放包的地址。
解决:
我查了很多博客,发现不少情况都可能导致这个问题,主要是 win下的情况, linux 和 Mac 就很少有这种奇奇怪怪的问题。比如 用户名是中文,环境变量没有配置好等等。
但是这些博客的方法都没有解决掉我的问题,我按照我的分析,到虚拟环境的根目录下发现了一个名叫 pyvenv.cfg
的文件,记事本打开之后果然全部指向了全局python解释器。
为了防止更多错误的出现,我只修改了base-executable
的值改为当前虚拟环境 Scripts
的地址。再次测试就正常了。
感觉这个也算一种解决方案,可以给遇到同样问题的人参考一下。
究极解决方案
如果你实在是不知道到底哪里出了问题,但是又不想因此放弃使用 win 下的虚拟环境,那还有最后一招。
在系统环境变量中添加一个 PYTHONPATH(折腾了这么久我相信咋加环境变量你应该很熟了。。。),值就是虚拟环境目录下的 Lib\site-packages 。
如果使用全局 pip 就把这个删掉,如果使用虚拟环境就加上这个。
网友评论