You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Python虚拟环境(virtualenv)的磁盘占用?

如何优化Python虚拟环境(virtualenv)的磁盘占用?

我太懂这种被大体积依赖包塞满磁盘的痛了——几个同Python版本的虚拟环境,装的TensorFlow、PyTorch这类动辄几G的AI库好多都是重复的,磁盘肉眼可见地缩水,又没法用--system-site-packages(毕竟要保留不同依赖版本的灵活性,总不能所有环境都用同一个版本的torch吧)。

像你截图里的这几个虚拟环境,相同依赖重复存储的问题特别明显:
几个虚拟环境的依赖情况
尤其是这些大体积依赖,简直是磁盘空间的“杀手”:
虚拟环境依赖的大小

下面给你几个实用的方案,既能省空间,又不牺牲依赖版本的灵活性:

从创建环境开始优化:用virtualenv-clone克隆环境

如果你要新建的环境和已有环境依赖很像,别再从头创建+装依赖了,用virtualenv-clone工具克隆!它会用硬链接代替复制文件,同版本的依赖文件只在磁盘上存一份,克隆出来的环境完全独立——比如你之后在克隆环境里升级某个依赖,系统会自动生成新的文件,不会影响原环境,完美保留版本灵活性。

步骤超简单:

  1. 先安装工具:pip install virtualenv-clone
  2. 克隆已有环境:virtualenv-clone /path/to/你的已有环境 /path/to/新环境

给已有的环境“瘦身”:用工具自动合并重复文件

如果你已经有一堆占空间的虚拟环境,可以用rdfind或者fdupes这类重复文件查找工具,自动把相同的依赖文件替换成硬链接,一次性省出大把空间。

比如用rdfind(Linux/macOS可以用包管理器装,Windows也有对应版本):
执行命令:rdfind -makehardlinks true /path/to/所有虚拟环境的父文件夹
它会自动扫描所有重复文件,把多余的副本删掉,换成指向原始文件的硬链接,完全不影响环境的正常使用。

手动精准优化:针对大体积依赖做硬链接

如果你不想用第三方工具,也可以手动处理那些占空间最大的依赖(比如你截图里的torch、tensorflow):

  1. 先找到不同环境里同版本的相同依赖(比如env1和env2都装了torch==2.1.0)
  2. 删除其中一个环境里的依赖文件夹(比如env2里的torch文件夹)
  3. 用硬链接指向另一个环境的对应文件夹:
    • Linux/macOS:ln /path/to/env1/lib/python3.x/site-packages/torch /path/to/env2/lib/python3.x/site-packages/torch
    • Windows:用命令提示符执行mklink /J "C:\path\to\env2\Lib\site-packages\torch" "C:\path\to\env1\Lib\site-packages\torch"(Junction链接,类似硬链接)

换用现代依赖管理工具(一劳永逸)

如果你愿意换工具,Poetry、Pipenv这类现代依赖管理工具天生就有空间优化:它们会把所有下载的包缓存到全局目录,创建虚拟环境时用硬链接把缓存里的包链接到环境中,同版本的依赖永远只存一份,而且依赖版本管理更清晰,还能自动处理依赖冲突。

一些关键注意事项

  • 硬链接只能在同一个磁盘分区使用,如果你的虚拟环境在不同分区,就用软链接(ln -s),但要注意用绝对路径,不然移动环境后链接会失效。
  • 硬链接是安全的:因为Python依赖包安装后基本是只读的,只有当你修改文件时,系统才会自动复制一份新的(写时复制),完全不会影响其他环境的依赖版本。
  • 别用软链接替代硬链接在依赖文件夹上:Python有时候会读取文件的inode信息,软链接可能导致一些奇怪的加载问题,硬链接更稳定。

备注:内容来源于stack exchange,提问作者Gonzalo Matheu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:52:58