PyInstaller Changelog

What's new in PyInstaller 2.1

Dec 18, 2013
  • User-visible Changes:
  • Rewritten manual explaining even very basic topics.
  • PyInstaller integration with setuptools (direct installation with easy_install or pip from PYPI - https://pypi.python.org/pypi). After installation there will be available command 'pyinstaller' for PyInstaller usage.
  • (Windows) Alter --version-file resource format to allow unicode support.
  • (Windows) Fix running frozen app running from paths containing foreign characters.
  • (Windows) Fix running PyInstaller from paths containing foreign characters.
  • (OSX) Implement --icon option for the .app bundles.
  • (OSX) Add argv emulation for OpenDocument AppleEvent (see manual for details).
  • Rename --buildpath to --workpath.
  • Created app is put to --distpath.
  • All temporary work files are now put to --workpath.
  • Add option --clean to remove PyInstaller cache and temporary files.
  • Add experimental support for Linux arm.
  • Minimum suported Python version is 2.4.
  • Add import hooks for docutils, jinja2, sphinx, pytz, idlelib, sqlite3.
  • Add import hooks for IPython, Scipy, pygst, Python for .NET.
  • Add import hooks for PyQt5, Bacon, raven.
  • Fix django import hook to work with Django 1.4.
  • Add rthook for twisted, pygst.
  • Add rthook for pkg_resource. It fixes the following functions for frozen app pkg_resources.resource_stream(), pkg_resources.resource_string().
  • Better support for pkg_resources (.egg manipulation) in frozen executables.
  • Add option --runtime-hook to allow running custom code from frozen app before loading other Python from the frozen app. This is usefull for some specialized preprocessing just for the frozen executable. E.g. this option can be used to set SIP api v2 for PyQt4.
  • Internal Stuff:
  • Fix runtime option --Wignore.
  • Rename utils to lowercase: archieve_viewer.py, bindepend.py, build.py, grab_version.py, make_comserver.py, makespec.py, set_version.py.
  • (OSX) Fix missing qt_menu.nib in dist directory when using PySide.
  • (OSX) Fix bootloader compatibility with Mac OS X 10.5
  • (OSX) Search libpython in DYLD_LIBRARY_PATH if libpython cannot be found.
  • (OSx) Fix Python library search in virtualenv.
  • Environment variable PYTHONHOME is now unset and path to python home is set in bootloader by function Py_SetPythonHome().This overrides sys.prefix and sys.exec_prefix for frozen application.
  • Python library filename (e.g. python27.dll, libpython2.7.so.1.0, etc) is embedded to the created exe file. Bootloader is not trying several filenames anymore.
  • Frozen executables now use PEP-302 import hooks to import frozen modules and C extensions. (sys.meta_path)
  • Drop old import machinery from iu.py.
  • Drop own code to import modules from zip archives (.egg files) in frozen executales. Native Python implementation is kept unchanged.
  • Drop old crypto code. This feature was never completed.
  • Drop bootloader dependency on Python headers for compilation.
  • (Windows) Recompile bootloaders with VS2008 to ensure win2k compatibility.
  • (Windows) Use 8.3 filenames for homepath/temppath.
  • Add prefix LOADER to the debug text from bootloader.
  • Allow running PyInstaller programatically.
  • Move/Rename some files, code refactoring.
  • Add more tests.
  • Tilde is in PyInstaller recognized as $HOME variable.

New in PyInstaller 1.5.1 (Aug 1, 2011)

  • New default PyInstaller icon for generated executables on Windows.
  • Add support for Python built with --enable-shared on Mac OSX.
  • Add requirements section to documentation.
  • Documentation is now generated by rst2html and rst2pdf.
  • Fix wrong path separators for bootloader-file on Windows
  • Add workaround for incorrect platform.system() on some Python Windows
  • installation where this function returns 'Microsoft' instead 'Windows'.
  • Fix --windowed option for Mac OSX where a console executable was
  • created every time even with this option.
  • Mention dependency on otool, ldd and objdump in documentation.
  • Fix typo preventing detection of DLL libraries loaded by ctypes module.

New in PyInstaller 1.5 (May 10, 2011)

  • New features were added, including full support for Python 2.6 and 2.7 (even on Windows), support for Windows 64-bit, binary bootloaders for Linux and Mac OS X (32-bit only), improved Mac OS X support, and compatibility with older Python versions (Python 2.2+).
  • Many bugs were fixed.

New in PyInstaller 1.4 (Mar 23, 2010)

  • Fully support up to Python 2.6 on Linux/Mac and Python 2.5
  • on Windows.
  • Preliminar Mac OSX support: both one-file and one-dir is supported;
  • for non-console applications, a bundle can be created. Thanks
  • to many people that worked on this across several months (Daniele
  • Zannotti, Matteo Bertini, Lorenzo Mancini).
  • Improved Linux support: generated executables are fatter but now
  • should now run on many different Linux distributions (thanks to David
  • Mugnai).
  • Add support for specifying data files in import hooks. PyInstaller
  • can now automatically bundle all data files or plugins required
  • for a certain 3rd-party package.
  • Add intelligent support for ctypes: PyInstaller is now able to
  • track all places in the source code where ctypes is used and
  • automatically bundle dynamic libraries accessed through ctypes.
  • (Thanks to Lorenzo Mancini for submitting this). This is very
  • useful when using ctypes with custom-made dynamic libraries.
  • Executables built with PyInstaller under Windows can now be digitally
  • signed.
  • Add support for absolute imports in Python 2.5(thanks to Arve
  • Knudsen).
  • Add support for relative imports in Python 2.5+.
  • Add support for cross-compilation: PyInstaller is now able to
  • build Windows executables when running under Linux. See documentation
  • for more details.
  • Add support for .egg files: PyInstaller is now able to look for
  • dependencies within .egg files, bundle them and make them available
  • at runtime with all the standard features (entry-points, etc.).
  • Add partial support for .egg directories: PyInstaller will treat them
  • as normal packages and thus it will not bundle metadata.
  • Under Linux/Mac, it is now possible to build an executable even when
  • a system packages does not have .pyc or .pyo files available and the
  • system-directory can be written only by root. PyInstaller will in
  • fact generate the required .pyc/.pyo files on-the-fly within a
  • build-temporary directory.
  • Add automatic import hooks for many third-party packages, including:
  • PyQt4 (thanks to Pascal Veret), with complete plugin support.
  • pyodbc (thanks to Don Dwiggins)
  • cElementTree (both native version and Python 2.5 version)
  • lxml
  • SQLAlchemy (thanks to Greg Copeland)
  • email in Python 2.5 (though it does not support the old-style
  • Python 2.4 syntax with Python 2.5)
  • gadfly
  • PyQWt5
  • mako
  • Improved PyGTK (thanks to Marco Bonifazi and foxx).
  • paste (thanks to Jamie Kirkpatrick)
  • matplotlib
  • Add fix for the very annoying "MSVCRT71 could not be extracted" bug,
  • which was caused by the DLL being packaged twice (thanks to Idris
  • Aykun).
  • Removed C++-style comments from the bootloader for compatibility
  • with the AIX compiler.
  • Fix support for .py files with DOS line endings under Linux (fixes
  • PyOpenGL).
  • Fix support for PIL when imported without top-level package ("import
  • Image").
  • Fix PyXML import hook under NT (thanks to Lorenzo Mancini)
  • Fixed problem with PyInstaller picking up the wrong copy of optparse.
  • Improve correctness of the binary cache of UPX'd/strip'd files. This
  • fixes problems when switching between multiple versions of the
  • same third-party library (like e.g. wxPython allows to do).
  • Fix a stupid bug with modules importing optparse (under Linux) (thanks
  • to Louai Al-Khanji).
  • Under Python 2.4+, if an exception is raised while importing a module
  • inside a package, the module is now removed from the parent's
  • namespace (to match the behaviour of Python itself).
  • Fix random race-condition at startup of one-file packages, that was
  • causing this exception to be generated: "PYZ entry 'encodings' (0j)
  • is not a valid code object".
  • Fix problem when having unicode strings among path elements.
  • Fix random exception ("bad file descriptor") with "prints" in non-console
  • mode (actually a pythonw "bug" that's fixed in Python 3.0).
  • Sometimes the temporary directory did not get removed upon program
  • exit, when running on Linux.
  • Fixed random segfaults at startup on 64-bit platforms (like x86-64).