Features
- Can I use PyInstaller as a cross-compiler? Can I package Windows binaries while running under Linux?
No, this is not currently supported. It is theoretically possible, but it is not among our priorities.
- Does PyInstaller build a real installer like NSIS or InstallShield?
No, despite its name (which has more to do with its historical roots), PyInstaller is used to transform a Python program into a native executable form which does not require existing Python installations to run. Building an installer program is totally outside the scope of PyInstaller.
License
- Can I use PyInstaller for my commercial, closed-source, Python application?
Yes.
- If I use PyInstaller for my commercial Python application, will I have to distribute my source code as well?
Absolutely not. You can ship the executables created with PyInstaller with whatever license you want.
- I need to modify PyInstaller for my own needs. Can I do that?
Of course, PyInstaller is free software. This falls under the terms of the GPL license: you can modify PyInstaller as you wish, but if you distribute your modifications (so-called derived work), you will have to do that under the GPL license. In short, you can't change the license of PyInstaller.
- Can I modify PyInstaller, use it for a commercial product, and never release nor distribute my modified version of PyInstaller?
Depends. PyInstaller source code is logically divided into two parts: one part is the builder itself, which constructs the executable. The other is the bootloader, which is embedded within the final executable. If you modify only the builder, then the answer is yes. If you modify also the bootloader, the answer is no: in fact, by distributing the final product you are also distributing a binary version of the bootloader, so you are forced to release the source code for your modified version.
- How can I tell the bootloader from the builder?
Just read the license at the top of each file. If it contains a paragraph with a special exception, then the file is part of the bootloader. Otherwise, it is part of the builder.
- This is too hard for me. I want a simpler rule.
Always contribute your modifications back to us. This is easier to remember, and it is also a nice way to show that you appreciated our program. We will do our best to integrate your patches into PyInstaller!
Misc
- Since I started using PyInstaller under Windows, I started seeing DeprecationWarning which did not exist before, such as: C:\program files\python23\lib\fcntl.py:7: DeprecationWarning: the FCNTL module is deprecated; please use fcntl
This is a known issue with PyInstaller under Windows. The workaround is to delete fcntl.pyc from your python\lib directory.
- Is there a way to open a ticket?
You may open a ticket login as openticket and using that same information as the password.
- With PyInstaller, I don't get Windows XP themes in my application with wxPython!
Make sure you are using at least PyInstaller 1.3, and that you are building a windowed mode executable (pass -w to Makespec.py).
- What about pkg_resources?
pkg_resources is currently not supported by PyInstaller. This means that an application using a library which uses the the pkg_resources API will probably not work out of the box.
- What about .egg files?
PyInstaller is currently not able to extract modules from egg files. Thus, you should always tell easy_install to unpack libraries using the -Z option.
- Under Linux, I get runtime dynamic linker errors, related to libc. What should I do?
The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can't run the resulting executable on an older system. The solution is to compile the bootloader on the oldest system you have around, so that it gets linked with the oldest version of GLIBC. Then, you can copy the bootloader binaries (support/loader/*) into your development system and run Build.py there.
Download in other formats: