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

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


当前回答

第三个选项是cx_Freeze,它是跨平台的。

其他回答

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

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

它已经显示了在Windows 64位中创建单个文件的一些问题:使用py2exe使用bundle_files = 1不起作用; 有必要创建一个setup.py文件以使其工作。http://www.py2exe.org/index.cgi/Tutorial步骤2; 我有依赖关系的问题,你必须通过导入安装文件中的包来解决; 我不能让它与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也是一个选项。它目前支持Linux, FreeBSD和Mac OS X。

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

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

使用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()
)

py2exe会生成你想要的EXE文件,但是你需要在你要使用新的EXE文件的机器上有相同版本的MSVCR90.dll。

有关更多信息,请参阅教程。