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

标签 python pyinstaller

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

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

最佳答案

假设您已经在 PYINSTALLER_PATH 中安装了 Pyinstaller(您应该第一次在发行版中调用Configure.py 脚本),Pyinstaller 通过调用 Makespec.py 从您的主脚本生成一个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 是完成这个任务的主脚本。

关于python - 有没有办法在另一个 .py 文件中使用 PyInstaller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302806/

相关文章:

python-3.5 - ImportError: DLL 加载失败: 找不到指定的模块。无法执行脚本pyi_rth_qt5plugins

python-3.x - 无法使用 PyInstaller 错误创建 .exe 文件

python - 如何使池对键盘中断敏感

python - 创建数组的 RDD

python - Virtualenv 不能继承 GetSitePackages() 属性

python - pyinstaller 包 cx_Oracle 问题(在 CentOS 上)

python - Pyinstaller 创建的 exe 在一台机器上运行,但在另一台机器上出错

Python 开源密码学工具包

php - Python 相当于 php 的 virtual()

python - PyInstaller 生成的 exe 不工作,项目使用 ReportLab