今天在帮一位大佬安装Python的开发环境,途中用到了venv。

在venv中安装完所有package之后,发现venv的目录中site-packages并没有刚刚安装的库,Scripts中也没有一些库所提供的脚本。

检查发现,所有安装的库都安装在系统Python环境中了,一定是venv的path没有生效。

使用Powershell ISE打开Activate.ps1,发现脚本中路径为绝对路径,路径中的中文字符都已经形成乱码了(编码错误,如图)。

原来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 日 11 : 24 PM
如果觉得这篇文章对你有用,请随意赞赏~