python - Pyinstaller:生成-exe文件+文件夹(在--onefile模式下)

标签 python user-interface exe pyinstaller packaging

现在我正在使用 Pyinstaller。 我有一个从 img 文件夹中获取图像的脚本..

/python
|----/img
|----|----icon1.ico
|----|----icon2.ico
|----maint.py

我生成.exe的脚本是

pyinstaller.py --windowed --noconsole --clean --onefile maint.py

问题是只生成了.exe文件,却忽略了整个文件夹/img。

问题:为了自动获取 .exe 文件 +/img 文件夹,我需要在上一行添加哪些附加语法?

我的意思是:在执行带有所有参数的 pyinstaller.py 脚本之后,我必须在/dist 文件夹中看到:.exe 文件 +/img 文件夹,其中包含我的应用程序的所有图标或位图文件

谢谢

最佳答案

我是这样解决问题的:

我正在使用当前版本的 PYInstaller + Python 2.67 和 Sublime Text 作为编辑器。

  1. 如果您的 Py 脚本需要一些文件、图标、图像,您必须包含一个从项目文件夹(在开发中)或形成临时数据文件夹(在部署的情况下)中检索这些文件的函数。该脚本必须在您的代码中恰好位于您放置亲属路径以获取资源的部分中。请严格按照this guideline .

  2. 在前面的代码之后,您必须第一次执行 pyinstaller 命令 - 正如我在我的问题中发布的那样 -。

  3. 现在,打开执行 PYInstaller(位于 PYinstaller/YourAppName/)命令后生成的 .spec 文件,并在 a.binaries 行之后添加,下一行进入 EXE() 函数:

    exe = EXE(pyz,
              a.scripts,
              a.binaries,
              Tree('..\\python\\images', prefix='images\\'),
    ....
    

    请记住,在 Tree(...) 函数中,第一个参数是要放在外面的文件夹:这意味着我想包含该文件夹的所有内容(请注意,我将 AppStart.py 文件的相对路径)放入我的 .EXE 文件的文件容器中。

  4. 修改后重新执行 pyinstaller 命令,但在本例中指向我的 .SPEC 文件:

    pyinstaller.py --windowed --noconsole --clean --onefile AppStart\AppStart.spec
    

最后,我的应用程序可以作为可执行文件执行,而无需像有人提到的那样复制和粘贴所有外部文件夹。 但我一如既往地考虑实用的方法。

感谢您的支持。

关于python - Pyinstaller:生成-exe文件+文件夹(在--onefile模式下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602727/

相关文章:

python - 在 python 脚本中嵌入图标

python - 使用 pyinstaller 创建 EXE 后将图像转换为视频的 Python 脚本问题

java - 在 java 代码中运行 .exe 文件

java - 如何使缩小图像中的拖拽消失?

vb.net - 点网 : Is there a way to do a Join statement on the UI Thread?

python CSV : reading rows terminated by comma results in an empty result

python - 将 celery 任务的结果链接到分布式组中

java - 初学者循环 GUI

python - 错误处理 : Skipping list items that do not exist

python - numpy 数组维度不匹配