Ubuntu 21.04下Virtualenv创建Python3.10虚拟环境异常问题咨询
问题原因与解答
问题1答案
该问题部分由Ubuntu的Python集成机制导致。Ubuntu会对官方源提供的Python版本施加定制补丁,修改site模块的默认路径查找逻辑,非系统默认版本(21.04自带默认版本为3.9,3.10属于额外安装的非默认版本)的USER_SITE、SITE_PREFIX默认没有适配虚拟环境的路径规则,叠加工具版本兼容问题后就会触发异常。
问题2答案
该问题不是virtualenv本身的配置缺陷,而是通过apt安装的python3-virtualenv版本过低导致。Ubuntu 21.04源里的virtualenv仅适配系统自带的Python3.9,未针对后续发布的Python3.10的路径规则做兼容处理,创建3.10虚拟环境时没有正确生成对应的site路径配置,才会出现site-packages未被加入sys.path的问题。
问题3答案
该异常不属于site模块的极端边界情况,是发行版定制补丁与旧版本工具不匹配导致的常规兼容问题。
补充问题(pip -e安装包失效)说明
开发模式安装的包无法识别、不显示在pip freeze输出中是同一根因导致的:由于虚拟环境的site-packages路径未被加入sys.path,开发模式安装生成的.egg-link文件路径自然不会被解释器识别,因此会触发导入报错、包列表也不会收录对应条目。
修复方案
- 卸载apt安装的旧版virtualenv:
sudo apt remove -y python3-virtualenv
- 用系统pip安装最新版virtualenv:
sudo pip3 install -U virtualenv
- 删除原有异常的Python3.10虚拟环境,重新执行创建命令即可,生成的环境会自动识别
site-packages路径,无需手动配置PYTHONPATH,pip -e安装的开发包也可正常使用。
内容的提问来源于stack exchange,提问作者A_A
相关产品推荐
相关产品推荐

