virtualenv 在 Windows 中无法激活
发布于 | 2024-02-28 16:29 | ||
保质期 | 2025-02 | ||
新鲜度 | 11% |
环境(参考)
- 系统:Windows 11 x64
- 软件:PyCharm 2023.3
- 运行时:Python 3.7、3.10、3.11,Miniconda (3.9)
原因
项目目录含有中文,而 activate.bat
文件编码默认是 UTF-8,导致注入的环境变量值是乱码。
检测方法
浏览
activate.bat
的源码可知,它会将当前虚拟环境的 Python 运行路径注入到环境变量PATH
中。
在除了 PyCharm 以外的地方激活虚拟环境,并观察 PATH
的值是否有乱码。
bat
cd %PROJECT%/venv/Scripts # 你的项目目录下的虚拟环境
activate
echo %PATH%
注意
我的 PyCharm 不知道为什么始终会有乱码。如果你需要在 PyCharm 中甄别,可以事先往 PATH
中插入一个含有中文的路径,并观察手动插入的路径是否在 PyCharm 中正确显示;如果不能正确显示,则观察乱码内容是否在更改 activate.bat
编码后发生变化。
检测多版本共存
一开始以为是多版本共存的问题,但是之前别的项目也可以正确创建,觉得不对劲,于是创建了一个带有相同版本号的虚拟环境的、名为 test
的项目,并成功激活。pip -V
正确指向了父环境(Python 3.10)。
解决
将 activate.bat
的文件编码从 UTF-8 改为 GB2312 或 GBK 即可。
但是更改编码后,PyCharm 部分与虚拟环境有关的功能无法正常使用,所以最好的办法还是去掉项目路径上的中文字符。