virtualenv已移除--no-site-packages参数?如何实现相同隔离效果?
关于--no-site-packages参数的状态说明
--no-site-packages参数早在2016年发布的virtualenv 15.0.0版本就已正式移除,该参数对应的「禁止虚拟环境访问全局site-packages目录」的逻辑,已经成为virtualenv创建环境时的默认配置,不需要额外指定。如果需要开启全局包访问,可使用保留的--system-site-packages参数。
激活虚拟环境后仍能访问全局pip-check的原因及解决方法
你遇到的可执行命令可以调用到全局版本的情况,不属于虚拟环境隔离失效,原因和对应解决方法如下:
- 可执行命令的调用优先级由系统PATH变量决定,全局安装的
pip-check会写入系统级别的PATH路径,若虚拟环境的可执行目录优先级低于系统路径,就会调用到全局版本。激活虚拟环境后执行which pip-check即可查看当前调用的pip-check实际路径,确认是否属于全局安装版本。 - 要解决这个问题,直接在激活后的虚拟环境中执行
pip install pip-check,虚拟环境内安装的可执行文件优先级会高于系统全局版本,后续调用就会优先使用虚拟环境内的版本。
手动调整虚拟环境全局包访问权限的方法
如果你需要手动确认或修改虚拟环境的隔离配置,直接打开虚拟环境根目录下的pyvenv.cfg文件,调整include-system-site-packages配置项即可:
- 设为
false:等价于原--no-site-packages效果,禁止访问全局site-packages - 设为
true:等价于--system-site-packages效果,允许访问全局site-packages
内容的提问来源于stack exchange,提问作者auspicious99
相关产品推荐
相关产品推荐

