有没有办法在另一个.py文件中使用PyInstaller?

时间:2012-04-24 17:18:52

标签: python pyinstaller

我的问题如下: 我想创建一个可以创建其他可执行文件的脚本。这些新的可执行文件必须是独立的,因此它们不需要任何DLL等。 我知道PyInstaller可以实现这一点,但仅限于控制台/命令行。 基本上,我想要做的是创建一个导入pyinstaller的python脚本,创建另一个.py文件并使用pyinstaller将新脚本编译为.exe,这样没有安装python的人就可以使用这个程序了。

编辑:脚本本身应该只使用一个文件,因此它也可以是单文件可执行文件

3 个答案:

答案 0 :(得分:1)

假设您已经在PYINSTALLER_PATH中安装了Pyinstaller(您应该首次在分发中调用Configure.py脚本),Pyinstaller通过调用Makespec.py从您的主脚本生成一个spec文件。您可以添加一些标志来生成一个dir二进制分发或一个文件。最后,您必须使用spec文件调用Build.py。

这可以通过几个系统调用轻松编写脚本。类似的东西:

import os

PROJECT_NAME = "test"
PROJECT_MAIN_SCRIPT = "main_script.py"
MAKESPEC_CMD = """%s %s\Makespec.py -X -n %s -F %s""" % (PYTHON_EXECUTABLE, PYINSTALLER_PATH, PROJECT_NAME, PROJECT_MAIN_SCRIPT)
BUILD_CMD = """%s %s\Build.py %s.spec""" % (PYTHON_EXECUTABLE, PYINSTALLER_PATH, PROJECT_NAME)

os.system(MAKESPEC_CMD)
os.system(BUILD_CMD)

您可以避免每次生成规范文件并破解它,添加嵌入资源(即xml文件或配置)并指定其他标记。基本上这是一个python文件,带有一些字典的定义。

我认为你不能直接使用Pyinstaller模块,但是你可以看看Build.py并模仿它的行为来做同样的事情。 Build.py是实现这一诀窍的主要脚本。

答案 1 :(得分:0)

您可能需要查看cx_Freeze,这可用于执行此类操作。

  

使用cx_Freeze有三种不同的方法。第一种是使用包含的cxfreeze脚本,该脚本适用于简单脚本。第二种是创建distutils设置脚本,该脚本可用于更复杂的配置或保留配置以供将来使用。 第三种方法涉及直接使用cx_Freeze内部使用的类和模块,应保留用于复杂脚本或扩展或嵌入

Source

答案 2 :(得分:0)

尝试下载Pyinstaller的最新开发代码。在那里,他们试图实现用于构建可执行文件的GUI工具包。