如何减小python虚拟环境的大小?
这可能是:
site_packages
删除软件包,但是可以删除哪个软件包?*.pyc
文件还有什么可以删除或剥离的?还是有其他方法?
例如,用例是将virtualenv
上传到空间有限的服务器(例如AWS Lambda
函数,限制为512 MB)
答案 0 :(得分:1)
如果有一个.pyc
文件,您可以删除该.py
文件,只是要知道您将丢失这些文件中的堆栈跟踪信息,因此很可能弄乱您拥有的任何错误/异常记录。
除此之外,没有一种减小virtualenv大小的通用方法-它高度依赖于已安装的软件包,因此您极有可能不得不尝试反复尝试或阅读源代码来弄清楚完全可以删除。
您能做的最好的事情就是寻找占用最大空间的软件包,然后进一步调查那些占用磁盘空间最多的软件包。在具有标准coreutil命令的* nix系统上,您可以运行以下命令:
du -ha /path/to/virtualenv | sort -h | tail -20
答案 1 :(得分:1)
安装所有软件包后,您可以尝试删除virutalenv中与安装软件包有关的所有软件包。
rm -r pip*
rm -r pkg_resources*
rm -r setuptools*
根据所安装的软件包,结果可能仍会按预期工作,因为大多数软件包不会对这三个软件包具有运行时依赖性。使用风险自负。
答案 2 :(得分:0)
创建virtualenv时,可以告诉它使用系统site_packages
。如果在系统上全局安装了所有必需的软件包,则在创建virtualenv时,它实际上是空的。
$ pip install package1 package2 ...
$ virtualenv --system-site-pacages venv
$ source venv/bin/activate
(venv) $ # now you can use package1, package2, ...
使用此方法,您可以过度安装一个软件包。如果您在virtualenv内安装了一个软件包,则将使用该软件包,而不是系统上的任何软件包。