如何从源代码编译Python并获得干净/最小的安装?
如果你按照简单的步骤 configure
-> make
-> make install
来从源代码编译 Python,你会发现安装的内容非常庞大,里面有很多其实并不需要的文件,但这些文件却占用了空间。比如说,所有的 .py
文件都会被保留在安装包里(不仅仅是 .pyc
或 .pyo
文件),每个库的单元测试文件也会被带过来,还有手册页等等。
有没有什么现成的方法(比如说某个选项)可以在安装过程中忽略或去掉这些“多余”的文件,这样你就能得到一个简洁但功能齐全的 Python 版本呢?
如果没有现成的步骤,那哪些文件可以去掉,同时又能确保安装后在机器上还能正常运行呢?
4 个回答
这样的选项(如果软件本身有的话)通常可以在 configure
脚本中找到。你可以试着输入 configure -h
来查看帮助信息。
另外,如果有同名的 .pyc
文件,你也可以尝试删除 .py
文件。同时,.pyo
文件也可以删除。删除 .py
和 .pyo
文件可以在我的 Python 2.7.3 安装中节省大约 72396 kB 的空间(大约是 47%)。
没有这样的选项——这其实是件好事,保持安装的原样是有好处的(也许你可以手动删掉测试文件)。这些 .py 文件在调试的时候很有用。除此之外,你真的希望保持完整的安装状态。我们在各种 Linux 发行版上看到的那些精简版的 Python 安装,通常会让人感到很麻烦。
看看Debian的 python2.7-minimal
包可能会很有帮助,你可以通过 apt-get source python2.7-minimal
来获取它。当你不确定的时候,最好看看别人,特别是专家们是怎么做的……
从 debian/rules
文件中可以看到:
: # Move the binary and the minimal libraries into $(p_min).
dh_installdirs -p$(p_min) \
etc/$(PVER) \
usr/bin \
usr/include/$(PVER) \
usr/share/man/man1 \
$(scriptdir)/lib-dynload \
$(scriptdir)/config
DH_COMPAT=2 dh_movefiles -p$(p_min) --sourcedir=$(d) \
usr/bin/python$(VER) \
usr/share/man/man1/python$(VER).1 \
$(foreach i,$(MIN_MODS),$(scriptdir)/$(i).py) \
$(foreach i,$(MIN_PACKAGES),$(scriptdir)/$(i)) \
$(foreach i,$(MIN_ENCODINGS),$(scriptdir)/$(i)) \
$(scriptdir)/config/Makefile \
usr/include/$(PVER)/pyconfig.h \
$(scriptdir)/site.py
这些 MIN_*
变量是从 README.Debian.in
文件中解析出来的,这个文件不仅是包的 README
,还成为了决定包含哪些模块的权威来源。
这些内容很有趣,我之前从来没有关注过。至于你的问题,答案似乎是,Python中确实没有一个真正的最小目标,但也许你可以采用Debian的做法来实现你的目标。