如何强制脚本仅使用virtualenv(venv)内的依赖库运行?
强制Python脚本仅使用virtualenv内的依赖库
确认虚拟环境的激活有效性
激活虚拟环境后,先检查终端提示符开头是否出现(.venv)标记,或者执行which python和which pip命令,确认输出路径是.venv/bin/python和.venv/bin/pip。如果路径不对,说明激活未生效,可直接使用虚拟环境内Python的绝对路径运行脚本,比如:./.venv/bin/python your_script.py彻底隔离系统全局依赖
创建虚拟环境时,添加--no-site-packages参数确保完全隔离系统的site-packages(新版virtualenv默认已开启,但旧版本可能需要手动指定):virtualenv --no-site-packages .venv激活后,检查并清空可能干扰的
PYTHONPATH环境变量:unset PYTHONPATH正确生成依赖清单
当虚拟环境隔离生效后,运行脚本会触发ModuleNotFoundError,此时用虚拟环境内的pip逐个安装所需依赖:./.venv/bin/pip install 依赖包名称所有依赖安装完成后,执行以下命令生成
requirements.txt:pip freeze > requirements.txt部署到服务器时,只需创建并激活虚拟环境,然后执行:
pip install -r requirements.txt验证隔离效果
写一个简单的测试脚本,导入一个系统已安装但虚拟环境内未安装的库,比如:import requests print(requests.__file__)用虚拟环境内的Python运行该脚本,如果出现
ModuleNotFoundError,说明隔离生效;如果成功运行并打印系统site-packages路径,需重新检查虚拟环境的创建参数或激活状态。
内容的提问来源于stack exchange,提问作者user984621
相关产品推荐
相关产品推荐

