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

Mig*_*ome 16 python user-interface packaging exe pyinstaller

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

/python
|----/img
|----|----icon1.ico
|----|----icon2.ico
|----maint.py
Run Code Online (Sandbox Code Playgroud)

我生成.exe的脚本是

pyinstaller.py --windowed --noconsole --clean --onefile maint.py
Run Code Online (Sandbox Code Playgroud)

问题是只生成.exe文件但是省略了整个文件夹/ img.

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

2013年12月18日更新

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

谢谢

Mig*_*ome 22

2013年12月19日更新

最后,我们得到了它!

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

1.如果您的Py脚本需要一些文件,图标,图像,您必须包含一个从项目文件夹(开发中)检索这些文件的功能,或者形成临时数据文件夹(如果部署).此脚本必须完全位于您放置亲属路径以获取资源的部分中.请 严格按照以下准则进行操作:https:

//stackoverflow.com/a/13790741 2.在上一段代码之后,您必须首次执行pyinstaller命令 - 我在帖子中发布了问题.

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

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          Tree('..\\python\\images', prefix='images\\'),
....
Run Code Online (Sandbox Code Playgroud)

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

4.在该修改之后重新执行pyinstaller命令,但在这种情况下指向我的.SPEC文件:

pyinstaller.py --windowed --noconsole --clean --onefile AppStart\AppStart.spec
Run Code Online (Sandbox Code Playgroud)

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

感谢您的支持.

  • 答案没有回答最初的问题。有没有办法告诉 pyinstaller 自己复制 dist 目录中的文件或目录,而不是将它们添加到捆绑包中? (2认同)