【问题标题】:Updating .Spec file for Pyinstaller gets reset更新 Pyinstaller 的 .Spec 文件被重置
【发布时间】:2018-08-11 12:38:30
【问题描述】:

我正在尝试修改由 Pyinstaller 创建的默认 .spec 文件以包含隐藏的导入和数据,但是每次我运行 pyinstaller 并指定像 pyinstaller source.py spource.spec 这样的规范文件时,我的 source.spec 都会恢复到默认状态即

a = Analysis(['source.py'],
pathex=['C:\\PATHTOSOURCE'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)

我想要完成的是

from PyInstaller.utils.hooks import collect_data_files, collect_submodules
Mydatas = collect_data_files("skimage.io._plugins")
Myhiddenimports = collect_submodules('skimage.io._plugins')

a = Analysis(['source.py'],
pathex=['C:\\PATHTOSOURCE'],
binaries=[],
datas=Mydatas,
hiddenimports=Myhiddenimports,
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)

但这又被重置为上述默认分析类 非常感谢

【问题讨论】:

    标签: python pyinstaller scikit-image


    【解决方案1】:

    对于仍在为这个问题苦苦挣扎的人。这也发生在我身上,但这是由于人为错误。

    当您第一次通过 PyInstaller 构建项目时,您可能会执行以下操作: pyinstaller mymodule.py

    除其他外,这将生成.spec 文件。如果您编辑此 .spec 文件并希望使用此规范文件构建脚本,请确保将 PyInstaller 指向该文件。

    pyinstaller mymodule.spec

    我还建议您在进行更改时备份您的 .spec 文件。这样,如果您不小心重新使用了mymodule.py 路径,您可以快速恢复您对规范所做的更改。

    【讨论】:

      【解决方案2】:

      官方方法是先使用makespec.py脚本(自带PyInstaller模块)创建永久的spec文件(这个例子是我的Windows系统,你需要修改你系统的python路径),传递相同的选项作为 PyInstaller 选项(如果以后makespec.py 路径发生变化,请尝试从PyInstaller 模块路径开始查找文件):

      "c:\Program Files\Python38\python.exe" "c:\Program Files\Python38\Lib\site-packages\PyInstaller\utils\cliutils\makespec.py" -F --noconsole --icon=example_small.ico example.py
      

      然后根据需要编辑生成的文件example.spec,然后执行此操作以生成exe文件为PyInstaller do:

      "c:\Program Files\Python38\python.exe" -m PyInstaller example.spec 
      

      以后,你可以简单地在修改你的python代码后重新运行上面的第二个命令来生成新的exe文件。但有时(例如导入新库)您需要编辑example.spec 文件,以两种方式之一

      • 编辑example.spec文件,然后重新运行第二条命令
      • 编辑第一个命令选项,然后重新运行这两个命令。当然,example.spec 文件将被替换为 第一个命令。如果您之前手动编辑过example.spec,则应先备份example.spec,以便在重新生成example.spec 后通过参考备份文件来编辑example.spec

      更多信息:

      pyi-makespec 用于创建规范文件。请参阅使用规范文件。

      如果您不执行完整安装(通过pip 或 执行setup.py),这些命令将不会作为命令安装。 但是,您仍然可以执行下面记录的所有功能 运行分布文件夹中的 Python 脚本。这 相当于pyinstaller 命令是 pyinstaller-folder/pyinstaller.py。其他命令位于 pyinstaller-folder/cliutils/ 具有有意义的名称(makespec.py 等)

      【讨论】:

        【解决方案3】:

        amr

        我也在努力与规格文件挣扎,但我想我知道你的问题的答案。 pyinstaller sourts.py如果一个尚未存在,则创建一个默认的规格文件。 pyinstaller源.py将使用source.spec如果当前在执行pyinstaller source.py命令的同一目录中。如果可用规范文件,则可以执行pyinstaller源.Spec,您的构建将使用该规范文件中的值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-14
          • 2012-04-14
          • 2021-09-13
          • 1970-01-01
          • 2016-09-16
          • 1970-01-01
          • 1970-01-01
          • 2016-10-05
          相关资源
          最近更新 更多