Fedora下python -m venv与python3 -m venv创建虚拟环境差异原因问询
问题原因解析
核心差异来自两个命令对应不同的Python解释器实例,venv模块的默认行为存在区别
- Fedora默认遵循PEP 394规范,不会默认提供未版本化的
python命令,你当前可执行的python命令要么是手动安装python-is-python2包提供的Python 2软链接,要么是自行配置的别名、或源码/第三方渠道安装的非官方Python版本;而python3是Fedora官方默认提供的、指向系统Python 3的标准命令。 - 若
python指向Python 2,Python 2本身没有内置官方venv模块,你调用的是第三方兼容实现的venv包,该包默认开启--system-site-packages开关,会继承全局site packages,且pip路径配置默认指向全局安装路径,就会出现虚拟环境激活后装包落到全局的问题。 - 若
python指向的是自行安装的非官方Python 3版本,要么是该版本编译时venv模块默认配置开启了全局包继承,要么是你本地给python -m venv配置了带--system-site-packages参数的别名;而Fedora官方打包的python3的venv模块默认关闭全局包继承,仅预装pip和setuptools,符合隔离预期。
排查验证方法
- 执行
which python和which python3对比两个命令的实际路径 - 执行
python --version和python3 --version确认对应的版本差异 - 执行
alias python检查是否存在带额外参数的命令别名 - 执行
python -m venv --help查看--system-site-packages选项是否为默认开启状态
可选修复方案
如果需要统一两个命令的行为,可手动指定venv的隔离参数:python -m venv --without-system-site-packages env,或者修改~/.bashrc/~/.zshrc中的python别名,将其指向官方的python3命令即可。
内容的提问来源于stack exchange,提问作者icemelting
相关产品推荐
相关产品推荐

