如何在不占用过多磁盘空间的情况下使用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




