我正在构建一个Python应用程序,不想强迫我的客户端安装Python和模块 . 我也想让我的应用程序闭源 .
那么,有没有办法将Python脚本编译为独立的可执行文件?
您可能希望调查Nuitka . 它需要python源代码并将其转换为C API调用 . 然后它编译成可执行的二进制文件(Linux上的ELF) . 它已经存在了几年,并支持各种Python版本 .
如果使用它,您可能也会获得性能提升 . 推荐的 .
对于Python 3.2脚本,唯一的选择是Cxfreeze . 从源代码构建它,否则它将无法工作 .
对于python 2.x我建议使用pyinstaller,因为它可以将python程序打包在一个可执行文件中,这与CxFreeze不同,它也输出库 .
您可以找到@ https://wiki.python.org/moin/DistributionUtilities列出的分发实用程序列表 .
我使用bbfreeze并且它一直运行良好(但是仍然支持python 3) .
使用Cython转换为c,编译并与gcc链接 . 另一个可能是,使c中的核心函数(你想要反转的那些),编译它们并使用python boost来导入已编译的代码(加上你得到更快的代码执行) . 然后使用提到的任何工具进行分发 .
是的,可以将Python脚本编译为独立的可执行文件 .
PyInstaller可用于将Python程序转换为独立的可执行文件,位于 Windows ,014898, Mac OS X , FreeBSD , Solaris 和 AIX 下 . 它是推荐的转换器之一 .
py2exe将Python脚本转换为仅Windows平台中的可执行文件 .
Cython是Python编程语言和扩展的Cython编程语言的静态编译器 .
py2exe将生成您想要的exe文件,但您需要在要使用新exe的机器上安装相同版本的MSVCR90.dll . 有关详细信息,请参阅http://www.py2exe.org/index.cgi/Tutorial .
我想编译一些有关使用Python 2.7在Windows上创建独立文件的有用信息 .
我使用了 py2exe 并且它有效,但我遇到了一些问题 .
在Windows 64位中创建单个文件时出现了一些问题:Using bundle_files = 1 with py2exe is not working;
必须创建一个setup.py文件才能使用 . http://www.py2exe.org/index.cgi/Tutorial#Step2;
我遇到了必须通过在安装文件中导入包来解决的依赖项问题;
我无法与PyQt一起工作..
这最后一个原因让我试试 PyInstaller http://www.pyinstaller.org/ .
在我看来,它更好,因为:
我建议使用以下行创建一个.bat文件(pyinstaller.exe必须在Windows路径中):
pyinstaller.exe --onefile MyCode.py
您可以创建单个文件以及其他选项(https://pyinstaller.readthedocs.io/en/stable/usage.html#options) .
我使用PyInstaller和多处理包只有一个问题,使用这个方法解决了:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
所以,我认为,至少对于python 2.7,更好更简单的选择是PyInstaller .
我被告知PyRun,https://www.egenix.com/products/python/PyRun/也是一种选择 .
你可能会喜欢py2exe . 你也会在那里找到在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代码的打包,但现在还有来自google的grumpy,它将代码转换为Go . 它不支持python C api,因此它可能不适用于所有项目 .
使用pyinstaller,我找到了一个更好的方法,使用.exe的快捷方式而不是制作 --onefile . 无论如何,在那里运行基于站点的应用程序,那么你的程序也依赖于html,js,css文件 . 没有必要将所有这些文件移动到某个地方......相反,如果我们将工作路径向上移动 .
--onefile
创建exe的快捷方式,将其移动到顶部并按指定设置目标和启动路径,使相对路径转到dist \ folder: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" 可以将快捷方式重命名为任何内容,以便重命名为"GTFS-Manager"现在,当我双击快捷方式时,就像我运行python一样!我发现这种方法比 --onefile 更好:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
在onefile 's case, there'中,win7操作系统缺少.dll的问题,需要先安装等等 . 打哈欠 . 通常使用多个文件构建,没有这样的问题 .
我的python脚本使用的所有文件(它都是's deploying a tornado web server and needs a whole freakin'文件的网站!)不需要移动到任何地方:我只是在顶部创建快捷方式 .
我实际上可以在ubuntu(运行python3 myfile.py)和windows(双击快捷方式)中使用这个完全相同的文件夹 .
我不需要为.spec文件过于复杂的黑客攻击来包含数据文件等 .
哦,记得在构建后删除build文件夹,将保存大小 .
您可以使用PyInstaller将Python程序打包为独立的可执行文件 . 它适用于Windows,Linux和Mac .
PyInstaller快速入门从PyPI安装PyInstaller:pip install pyinstaller转到程序的目录并运行:pyinstaller yourprogram.py这将在名为dist的子目录中生成包 . 有关更详细的演练,请参阅手册 .
第三种选择是cx_Freeze,这是跨平台的 .
我还建议使用pyinstaller以获得更好的向后兼容性,例如python 2.3 - 2.7 .对于 py2exe ,你必须有python 2.6
您可以使用py2exe已经回答并使用cython转换 .pyc 中的密钥 .py 文件,C编译文件,如Windows中的 .dll 和Linux中的 .so ,比常见的 .pyo 和 .pyc 文件更难恢复(并且还获得了性能!)
.pyc
.py
.dll
.so
.pyo
16 回答
您可能希望调查Nuitka . 它需要python源代码并将其转换为C API调用 . 然后它编译成可执行的二进制文件(Linux上的ELF) . 它已经存在了几年,并支持各种Python版本 .
如果使用它,您可能也会获得性能提升 . 推荐的 .
对于Python 3.2脚本,唯一的选择是Cxfreeze . 从源代码构建它,否则它将无法工作 .
对于python 2.x我建议使用pyinstaller,因为它可以将python程序打包在一个可执行文件中,这与CxFreeze不同,它也输出库 .
您可以找到@ https://wiki.python.org/moin/DistributionUtilities列出的分发实用程序列表 .
我使用bbfreeze并且它一直运行良好(但是仍然支持python 3) .
使用Cython转换为c,编译并与gcc链接 . 另一个可能是,使c中的核心函数(你想要反转的那些),编译它们并使用python boost来导入已编译的代码(加上你得到更快的代码执行) . 然后使用提到的任何工具进行分发 .
是的,可以将Python脚本编译为独立的可执行文件 .
PyInstaller可用于将Python程序转换为独立的可执行文件,位于 Windows ,014898, Mac OS X , FreeBSD , Solaris 和 AIX 下 . 它是推荐的转换器之一 .
py2exe将Python脚本转换为仅Windows平台中的可执行文件 .
Cython是Python编程语言和扩展的Cython编程语言的静态编译器 .
py2exe将生成您想要的exe文件,但您需要在要使用新exe的机器上安装相同版本的MSVCR90.dll . 有关详细信息,请参阅http://www.py2exe.org/index.cgi/Tutorial .
我想编译一些有关使用Python 2.7在Windows上创建独立文件的有用信息 .
我使用了 py2exe 并且它有效,但我遇到了一些问题 .
在Windows 64位中创建单个文件时出现了一些问题:Using bundle_files = 1 with py2exe is not working;
必须创建一个setup.py文件才能使用 . http://www.py2exe.org/index.cgi/Tutorial#Step2;
我遇到了必须通过在安装文件中导入包来解决的依赖项问题;
我无法与PyQt一起工作..
这最后一个原因让我试试 PyInstaller http://www.pyinstaller.org/ .
在我看来,它更好,因为:
我建议使用以下行创建一个.bat文件(pyinstaller.exe必须在Windows路径中):
您可以创建单个文件以及其他选项(https://pyinstaller.readthedocs.io/en/stable/usage.html#options) .
我使用PyInstaller和多处理包只有一个问题,使用这个方法解决了:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
所以,我认为,至少对于python 2.7,更好更简单的选择是PyInstaller .
我被告知PyRun,https://www.egenix.com/products/python/PyRun/也是一种选择 .
你可能会喜欢py2exe . 你也会在那里找到在linux上做这件事的信息
使用py2exe ....使用下面的设置文件:
不完全是python代码的打包,但现在还有来自google的grumpy,它将代码转换为Go . 它不支持python C api,因此它可能不适用于所有项目 .
使用pyinstaller,我找到了一个更好的方法,使用.exe的快捷方式而不是制作
--onefile
. 无论如何,在那里运行基于站点的应用程序,那么你的程序也依赖于html,js,css文件 . 没有必要将所有这些文件移动到某个地方......相反,如果我们将工作路径向上移动 .创建exe的快捷方式,将其移动到顶部并按指定设置目标和启动路径,使相对路径转到dist \ folder:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
可以将快捷方式重命名为任何内容,以便重命名为"GTFS-Manager"现在,当我双击快捷方式时,就像我运行python一样!我发现这种方法比
--onefile
更好:在onefile 's case, there'中,win7操作系统缺少.dll的问题,需要先安装等等 . 打哈欠 . 通常使用多个文件构建,没有这样的问题 .
我的python脚本使用的所有文件(它都是's deploying a tornado web server and needs a whole freakin'文件的网站!)不需要移动到任何地方:我只是在顶部创建快捷方式 .
我实际上可以在ubuntu(运行python3 myfile.py)和windows(双击快捷方式)中使用这个完全相同的文件夹 .
我不需要为.spec文件过于复杂的黑客攻击来包含数据文件等 .
哦,记得在构建后删除build文件夹,将保存大小 .
您可以使用PyInstaller将Python程序打包为独立的可执行文件 . 它适用于Windows,Linux和Mac .
第三种选择是cx_Freeze,这是跨平台的 .
我还建议使用pyinstaller以获得更好的向后兼容性,例如python 2.3 - 2.7 .
对于 py2exe ,你必须有python 2.6
您可以使用py2exe已经回答并使用cython转换
.pyc
中的密钥.py
文件,C编译文件,如Windows中的.dll
和Linux中的.so
,比常见的.pyo
和.pyc
文件更难恢复(并且还获得了性能!)