我正在构建一个Python应用程序,不想强迫我的客户端安装Python和模块。

那么,是否有一种方法可以将Python脚本编译为独立的可执行文件?


当前回答

你可能想调查一下努伊特卡。它接受Python源代码并将其转换为c++ API调用。然后将其编译成可执行二进制文件(Linux上的ELF)。它已经存在了几年,并且支持广泛的Python版本。

如果使用它,您还可能获得性能改进。推荐使用。

其他回答

我也推荐使用PyInstaller以获得更好的向后兼容性,例如Python 2.3 - 2.7。

对于py2exe,你必须有Python 2.6。

我被告知PyRun也是一个选项。它目前支持Linux, FreeBSD和Mac OS X。

使用PyInstaller,我发现了一个更好的方法,使用快捷方式到.exe,而不是制作——onefile。无论如何,可能会有一些数据文件,如果你运行的是基于站点的应用程序,那么你的程序也依赖于HTML, JavaScript和CSS文件。把这些文件都搬到别的地方去没有任何意义。相反,如果我们向上移动工作路径呢?

为EXE文件创建一个快捷方式,将其移动到顶部,并设置目标和起始路径,以使相对路径进入dist\文件夹:

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更好,因为:

In onefile's case, there's a problem with a .dll missing for the Windows 7 OS which needs some prior installation, etc. Yawn. With the usual build with multiple files, no such issues. All the files that my Python script uses (it's deploying a tornado web server and needs a whole freakin' website worth of files to be there!) don't need to be moved anywhere: I simply create the shortcut at top. I can actually use this exact same folder on Ubuntu (run python3 myfile.py) and Windows (double-click the shortcut). I don't need to bother with the overly complicated hacking of .spec file to include data files, etc.

哦,记得在构建后删除构建文件夹。它将节省尺寸。

您可以使用py2exe,并使用Cython将密钥的.py文件转换为.pyc, C编译文件,如Windows中的.dll和Linux中的.so。

它比普通的.pyo和.pyc文件更难恢复(而且性能也有所提高!)。

对于Python 3.2脚本,唯一的选择是cx_Freeze。从资源中构建;否则行不通。

对于Python 2。我建议使用PyInstaller,因为它可以将Python程序打包到一个可执行文件中,而不像cx_Freeze那样输出库。