Loading... 今天在帮一位大佬安装Python的开发环境,途中用到了venv。 在venv中安装完所有package之后,发现venv的目录中site-packages并没有刚刚安装的库,Scripts中也没有一些库所提供的脚本。 检查发现,所有安装的库都安装在系统Python环境中了,一定是venv的path没有生效。 使用Powershell ISE打开Activate.ps1,发现脚本中路径为绝对路径,路径中的中文字符都已经形成乱码了(编码错误,如图)。 ![](https://cdn.jsdelivr.net/gh/MapleWithered/img-storehouse@latest/picgo/img-2021-08-29-00-11-54.png) 原来Python3.7版本的venv在生成ps1脚本时使用的是绝对路径,恰巧这位大佬将项目代码放在了中文路径下,导致脚本中路径产生乱码,激活脚本后Powershell没有使用位于venv文件夹下的pip,使用了系统中的pip。 **解决方案**:从中文路径中移出,放在纯英文路径下,删除venv,重新创建venv,重新安装requirements。 另:Python3.7中venv激活脚本绝对路径的特性同样会造成另一个问题:即,当项目发生迁移时,虚拟环境可能无法正常激活,此时需要修改脚本中的路径。 **另一种解决方案**:使用更高版本的Python(在3.9环境下测试正常)。 P.S. Python3.9环境下,venv的PowerShell脚本生成已经非常智能了,甚至包含数字签名(好文明)! 最后修改:2021 年 08 月 28 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得这篇文章对你有用,请随意赞赏~