如何使Python脚本独立可执行文件运行没有任何依赖?

我正在构build一个Python应用程序,不想强迫我的客户端安装Python和模块。 我也想让我的应用程序是封闭的。

那么,有没有办法将Python脚本编译为独立的可执行文件?

您可以使用py2exe已经回答,并使用cython转换您的密钥.py文件在.pyc ,C编译的文件,如Windows中的.dll.so在Linux中,更难以恢复比普通的.pyo.pyc文件(和也获得了性能!)

我已经与pyinstaller取得了一些成功。 在Linux和Windows上工作。

你可能希望调查Nuitka 。 它需要python源代码并将其转换为C ++ API调用。 然后编译成可执行的二进制文件(Linux上的ELF)。 它已经存在了几年,并支持各种Python版本。

如果您使用它,您可能也会获得性能提升。 推荐的。

第三个select是跨平台的cx_Freeze

你可能会喜欢py2exe 。 你也可以在这里find在Linux上做的信息

使用py2exe ….使用下面的设置文件:

  from distutils.core import setup import py2exe from distutils.filelist import findall import matplotlib setup( console=['PlotMemInfo.py'], options={ 'py2exe': { 'packages' : ['matplotlib'], 'dll_excludes': ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'libgdk_pixbuf-2.0-0.dll'] } }, data_files = matplotlib.get_py2exe_datafiles() ) 

我想编译一些关于使用Python 2.7在Windows上创build独立文件的有用信息。

我已经使用py2exe ,它的工作原理,但我有一些问题。

  • 它已经显示了在Windows 64位创build单个文件的一些问题: 使用bundle_files = 1与py2exe不起作用 ;

  • 有必要创build一个setup.py文件来使其工作。 http://www.py2exe.org/index.cgi/Tutorial#Step2 ;

  • 我遇到了依赖问题,您必须通过在安装文件中导入包来解决这个问题。

  • 我无法使它与PyQt一起工作..

这最后一个原因使我尝试PyInstaller http://www.pyinstaller.org/

在我看来,这是好多了,因为:

  • 这是更容易使用。

我build议用下面的行创build一个.bat文件(pyinstaller.exe必须在Windowspath中):

 pyinstaller.exe --onefile MyCode.py 

所以,我认为,至less对于python 2.7来说,更好更简单的选项是PyInstaller。

是的,可以将Python脚本编译为独立的可执行文件。

PyInstaller可用于在WindowsLinuxMac OS XFreeBSDSolarisAIX下将Python程序转换为独立的可执行文件。 这是推荐的转换器之一。

py2exe将Python脚本转换为Windows平台中唯一的可执行文件。

Cython是Python编程语言和扩展的Cython编程语言的静态编译器。

我也推荐pyinstaller更好的向后兼容性,如Python 2.3 – 2.7。
对于py2exe ,你必须有Python 2.6

对于Python 3.2脚本,唯一的select是Cxfreeze。 从源代码构build,否则将无法正常工作。

对于python 2.x,我build议pyinstaller,因为它可以在单个可执行文件中打包python程序,而不像CxFreeze那样输出库。

py2exe将使你想要的exe文件,但你需要在你要使用新的exe文件的机器上有相同版本的MSVCR90.dll。 有关更多信息,请参见http://www.py2exe.org/index.cgi/Tutorial

您可以find列在@ https://wiki.python.org/moin/DistributionUtilities的发行实用程序列表。;

我使用bbfreeze ,它一直工作得很好(但仍然有python 3支持)。

不完全是Python代码的包装,但现在也从谷歌脾气暴躁 ,将代码转换为Go。 它不支持python C api,所以它可能不适用于所有的项目。

使用Cython转换为c,编译并链接到gcc。 另一个可能是,使核心函数在C(你想难以扭转),编译它们,并使用python boost导入编译的代码(加上你得到一个更快的代码执行)。 然后使用提到的任何工具来分发。

我被告知,PyRun, https ://www.egenix.com/products/python/PyRun/,也是一个选项。