如何在Python中创建可执行文件?

时间:2010-04-25 20:55:44

标签: python executable

我想制作Python应用程序的可执行文件(.exe)。

我想知道如何做到这一点,但请记住:我使用的是C ++ DLL!

我是否必须将DLL与.exe放在一边或者还有其他方法吗?

7 个答案:

答案 0 :(得分:10)

py2exe可以生成单个文件可执行文件。有关示例,请参阅this link

我使用的setup.py使用以下选项组合:

'compressed': 1,
 'optimize':2,
 'bundle_files': 1

我通常在可执行文件所在的文件夹中添加外部dll(p.e. msvcr71.dll)。

为了便于分发并在生成exe后自动安装,您可以使用Inno Setup创建一个安装程序,将您的exe和dll以及其他文档(自述文件等)放入应用程序目录

答案 1 :(得分:4)

遵循这些步骤:您可以在此site中找到此文档。

1)安装PyInstaller:

假设您已在此目录中安装了PIP c:\ PythonXX \ Scripts,如果没有,请转到此site并查看有关如何“安装Python索引项目(PIP)”的说明。转到命令提示符并键入以下命令。

  • cd c:\ Python27 \ Scripts转到此目录按Enter
  • 然后输入 - > pip install pyinstaller再次按Enter键
  • 这应该成功安装PyInstaller!
  • Obs:安装完成后,您不需要在Scripts文件夹中安装pyinstaller,因为我们需要PIP来安装pyinstaller文件。为了使事情更有条理,我通常将pyinstaller文件移动到另一个文件夹。要移动pysintaller文件,请转到pyinstaller文件所在的Scripts文件夹,并查找以“pyi”开头的所有文件,您还可以查看“修改日期”列以查看同时创建的文件。它应该是24个pyi文件,在您运行上面的脚本时创建。将这些文件复制到您选择的另一个文件夹中我通常在C:\驱动器中创建一个文件夹,并将其称为“CreateExecutables”,其中包含名为“pyinstaller_files”的另一个文件夹。

2)安装PyWin32:

转到此站点并查找名为pywin32-218.win32-py2.7.exe 2.7的可执行文件,该文件用于32位系统,用于python27查找与您对应的系统。运行可执行文件,它应该成功安装PyWin32,它与pyinstaller一起工作!

3)创建单个可执行文件

现在您已经拥有了PyInstaller和PyWin32,您可以开始创建单个可执行文件。单个可执行文件将在另一个名为“dist”的文件夹中创建,此文件夹也是在运行pyinstaller命令时动态创建的。为了清楚你的pyinstaller文件被你复制到另一个可能被称为“pyinstaller_files”文件夹的文件夹,所以现在在命令提示符下键入以下命令。

  • c:\ python27 \ CreateExecutables \ pyinstaller_files> pyinstaller --onefile c:\ test \ test1 \ yourscript.py
  • Obs:yourscript.py的目录是你的pydev模块所在的位置。

4)概述

上面的命令将在pyinstaller_files文件夹中创建一个名为“dist”的文件夹,该文件夹将包含您的单个可执行文件“yourscript.exe”。您现在可以在您选择的位置移动单个可执行文件,并删除“dist”&带有“yourscript.spec”文件的“build”文件夹,因为它们不再需要运行您的单个可执行文件。

答案 2 :(得分:2)

使用py2exe。您可以将DLL放在与最终EXE相同的文件夹中,并且应该正确加载。

答案 3 :(得分:1)

看看pyinstaller。它应该为您找到(并相应地发布)这些依赖项。

答案 4 :(得分:1)

我使用以下每个工具从Python 2.7代码构建了exe文件:

  • Cython(使用--embed选项)
  • Nuitka
  • Py2exe

这些都会产生一个独立的exe。您的安装人员必须包含必要的CRT dll。您的最终结果将与典型用户的任何其他exe无法区分。

前两个首先编译为C,然后使用您安装的任何编译器将其编译为最终的exe。 Py2Exe将Python和所有.pyo文件捆绑到一个zip中,它嵌入到exe中。启动时,它会解压缩到temp目录并从那里运行python。您需要将您的dll添加到.spec文件中,以便它包含在zip资源中。或者,在exe旁边安装你的dll并使用python中的绝对路径加载它。

答案 5 :(得分:0)

cx_Freeze也是一个很好的。

  

cx_Freeze是一组用于将Python脚本冻结为可执行文件的脚本和模块

答案 6 :(得分:0)

PyInstaller是最好的选择,因为它在Windows和Linux上运行良好。 如果您使用的是 arch linux ,请使用以下链接:PyInstaller或尝试yaourt pyinstaller