[Bf-committers] Bundle Python, modules to exclude (if any)

Campbell Barton ideasman42 at gmail.com
Mon Dec 8 04:10:05 CET 2008

Last meeting we discussed weather to include all python modules
(including modules bundled scripts don't use),
this seemed a popular option which surprised me, since I recall extra
size being a strong argument for some decisions in the past.

Id prefer to include ALMOST all modules, just removing a few larger
ones that are highly unlikely to be used by blender/python scripts.
(to my knowledge have not been used yet for this purpose).
Then again, if we're ok with adding ~8meg to Blenders download size,
Im not going to argue too hard against it. :-)

Keep in mind...
* This discussion is only about the blender distributed on
blender.org, linux distro's can still have a dynamic linked python.
* Building your own blender can work as it does now. (probably have
scons options for setting up a full python in the install DIR)
* Even if we remove these modules from a blender bundle, a full python
install would allow python devs to load them.
* Adding modules back is also easy enough if we discover they are
useful for blender.

== Summery ==
Tested with python 2.6.1 on windows, Sizes exclude python.exe, headers
and libpython26.a (which only added up to a few 100k compressed

Full Python
 - 25.5mb, 8.3mb zipped
Without TK
 - 16.1mb, 5mb zipped
Without TK, "distutils" and "test" modules
- 10.1mb, 3.5mb zipped

breakdown of module sizes uncompressed/compressed.
TK - ~9.3mb uncompressed, 3.4 zipped. (installer reports TK to use
13mb, not sure whats up with that)
"test" modules, 4.2mb, 0.7mb zipped.
"distutils"  1mb . 0.4mb zipped.

== Rationale ==
"TK", user interface modules, Id recommend excluding this because...
1) Python without TK is an install option for win32 (note, its the
ONLY module that can be unselected while installing), so we can
exclude it while maintaining a complete python env.
2) Blender has its own UI,
3) Tk isnt popular compared py WX, QT, GTK,
4) its fairly large
5) this hasn't been used with blender for any non-experimental scripts
AFAIK (feel free to link me to some blender tool that uses it)

(tk modules)
Tix - Tk Extension Widgets for Tkinter
Tkinter - Interface to Tcl/Tk for graphical user interfaces
turtle - Turtle graphics for Tk
ScrolledText - Text widget with a vertical scroll bar.
url: http://docs.python.org/modindex.html

"test" module, This isnt likely to be used by production tools,
developers who want to use it can have python installed.
summery: Regression tests package containing the testing suite for Python.
url: http://docs.python.org/library/test.html#module-test

"distutils" module, is normally used from the command line to install
python modules "python setup.py build; python setup.py install", a bit
like autotools "/configure; make; make install", again, blender tools
wont use this.

summery: Support for building and installing Python modules into an
existing Python installation.
url: http://docs.python.org/library/distutils.html#module-distutils


- Campbell

More information about the Bf-committers mailing list