如何使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
-
您可以创build一个单独的文件( https://pyinstaller.readthedocs.io/en/stable/usage.html#options )。
-
我只有一个问题,使用PyInstaller和多处理包使用这个配方解决: https : //github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing 。
所以,我认为,至less对于python 2.7来说,更好更简单的选项是PyInstaller。
是的,可以将Python脚本编译为独立的可执行文件。
PyInstaller可用于在Windows , Linux , Mac OS X , FreeBSD , Solaris和AIX下将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/,也是一个选项。