You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在不占用过多磁盘空间的情况下使用Python虚拟环境?

解决Python虚拟环境重复安装依赖占空间的实用方案

这个问题我太有共鸣了!之前做项目时反复装numpy、matplotlib这些大依赖,磁盘空间蹭蹭涨,试了不少办法,分享几个亲测好用的:

  • 克隆基础虚拟环境
    先搭建一个预装所有常用依赖的"基础环境",比如叫base_dev_env

    python -m venv base_dev_env
    source base_dev_env/bin/activate  # Windows系统用 base_dev_env\Scripts\activate
    pip install numpy matplotlib pandas  # 把你日常常用的依赖都装上
    deactivate
    

    之后新建项目时,直接克隆这个基础环境就行。Windows上可以直接复制粘贴环境文件夹(系统会用硬链接方式,不会重复占用空间);用conda的话更省心:

    conda create --name new_project_env --clone base_dev_env
    

    克隆出来的环境几乎不占额外空间,还能直接用所有预装依赖,完美解决重复安装的麻烦。

  • 开启虚拟环境的系统依赖共享
    创建虚拟环境时加上--system-site-packages参数,让虚拟环境直接复用系统全局已安装的依赖:

    python -m venv new_env --system-site-packages
    

    前提是你已经在系统全局装好了常用依赖(比如用sudo pip install numpy matplotlib),这样新项目环境就不用重复装了。但要注意:如果某个项目需要特定版本的依赖,可能会和系统版本冲突,这种场景就不适合用这个方法。

  • 利用pip缓存减少重复下载
    pip默认会把下载的包缓存到本地(Linux/macOS在~/.cache/pip,Windows在%LocalAppData%\pip\Cache),下次安装同一个版本的依赖时,直接从缓存提取,不用重新下载。虽然每个虚拟环境还是会有自己的包副本,但至少省了下载时间和流量。如果想进一步优化,还可以手动保存常用包的安装文件,用本地文件直接安装:

    pip install /path/to/numpy-1.26.0-cp311-none-win_amd64.whl
    
  • 进阶:用符号链接共享固定版本依赖
    如果你有多个项目都用同一个版本的numpy这类依赖,完全可以手动创建符号链接,让多个虚拟环境共用同一个包文件。比如在Linux/macOS上:

    ln -s /path/to/base_dev_env/lib/python3.11/site-packages/numpy /path/to/new_env/lib/python3.11/site-packages/numpy
    

    这个方法要谨慎使用,必须确保所有项目的依赖版本完全一致,不然会出现奇怪的兼容性问题。


内容的提问来源于stack exchange,提问作者ranky123

火山引擎 最新活动