关于Pyinstaller中add-data的作用?

发布于 2022-09-04 21:24:34 字数 1640 浏览 14 评论 0

我用pygame1.9.2写好了一个game.py和一堆其他的py文件,然后直接双击可以打开。但是程序需要一张图片,ship.bmp,于是我的game.spec里面是这样写的:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['game.py', 'game_functions.py', 'message.py', 'settings.py', 'ship.py'],
             pathex=['C:\\package'],
             binaries=[],
             datas=[('ship.bmp', 'img')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='game',
          debug=False,
          strip=False,
          upx=True,
          console=True )

最后运行程序,GUI无法显示,显示traceback:

Traceback (most recent call last):
  File "game.py", line 26, in <module>
  File "game.py", line 13, in run_game
  File "ship.py", line 11, in __init__
pygame.error: Couldn't open ship.bmp
Failed to execute script game

我在打包的时候写的是

pyinstaller -F --add-data="ship.bmp;img" game.py

这样对吗?而且pyinstaller并没有给我创建一个img文件夹啊,我应该自己创建一个吗?创建到哪儿?(我电脑上的ship.bmpgame.spec在同一个目录下。)

系统:Windows 10 python 3.5 pygame 1.9.2 pyinstaller 3.2.1


更新:我把ship.bmp放到了和game.exe同一目录下就可以了。那我就想问--add-data="ship.bmp;img"这里的img有什么用吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

星星的軌跡 2022-09-11 21:24:34
pyinstaller -F game.py --add-data="ship.bmp;img" 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文