Linux环境下Python3 virtualenv是否可安装全量模块及正确方案
结论
首先不建议安装所谓的全量Python模块,核心原因如下:
- PyPI官方仓库现存的Python模块超过40万个,全部安装需要占用几十甚至上百GB磁盘空间,安装过程耗时极长
- 不同模块之间存在大量版本冲突,完全不可能实现所有模块的最新版本共存安装
- 大量模块早已废弃、无人维护,全量安装会引入大量未知安全风险与运行故障
- 部分模块需要提前安装操作系统层面的编译依赖,全量安装几乎不可能100%成功
适配需求的最优实现方案
按照你提到的「大量存量脚本+持续新增脚本、不想每次单独装依赖」的需求,推荐以下可落地的方案:
方案1:所有脚本共用统一虚拟环境
如果你所有脚本的依赖不存在版本冲突,可以直接复用你已经创建的project_env虚拟环境:
- 批量收集所有存量脚本的依赖:在你的脚本存放目录执行以下命令,批量提取所有
import语句:grep -rhE '^import|^from' *.py | awk '{print $2}' | sort | uniq > raw_deps.txt - 手动整理
raw_deps.txt:注意部分模块的导入名和pip安装包名不一致(比如导入yaml对应安装包PyYAML、导入cv2对应安装包opencv-python),整理完成后将所有包名保存为requirements.txt - 激活
project_env虚拟环境后执行批量安装:pip install -r requirements.txt - 后续运行脚本不需要每次激活虚拟环境,直接调用虚拟环境的Python解释器绝对路径即可,示例:
/path/to/Environments/project_env/bin/python your_script.py - 后续新增脚本需要的新依赖,直接在激活虚拟环境后执行
pip install 包名安装即可,所有脚本可以共用这些依赖。
方案2:有依赖版本冲突时拆分虚拟环境
如果不同脚本之间存在依赖版本冲突,可以按脚本的业务类型创建多个虚拟环境,同类型的脚本共用同一个虚拟环境即可。
预安装常用模块的补充方案
如果你想要尽可能减少后续安装依赖的频率,可以选择提前预装绝大多数场景常用的模块:
- 可以直接切换为Anaconda Python发行版,它默认预装了近2000个高频使用的Python模块,覆盖数据分析、爬虫、Web开发、自动化运维等绝大多数场景,且所有预装模块都经过兼容性测试,不存在版本冲突
- 如果不想更换现有Python环境,可以直接执行以下命令安装高频常用模块:
pip install numpy pandas requests beautifulsoup4 lxml scrapy django flask fastapi pillow matplotlib seaborn scikit-learn pyyaml openpyxl xlrd paramiko psutil redis pymysql
内容的提问来源于stack exchange,提问作者jessica
相关产品推荐
相关产品推荐

