小游戏程序,本地环境能正常运行
程序调用了wav文件,即音效资源文件
程序调用wav路径正确,也是采用绝对路径
程序制作完成后,进行了以下三步打包操作:
在需要打包的程序的目录上,我进入终端输入以下命令进行打包:
pyinstaller -F -w snake.py
a = Analysis(
['snake.py'],
pathex=['C:\\Users\xxx\\PycharmProjects\\pythonProject1'],
binaries=[],
datas=[('C:\\Users\xxx\\PycharmProjects\\pythonProject1\\猫咪吃东西.wav')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyinstaller snake.spec
C:\Users\xxx\PycharmProjects\pythonProject1>pyinstaller snake.spec
309 INFO: PyInstaller: 5.10.0
309 INFO: Python: 3.7.4
310 INFO: Platform: Windows-10-10.0.22621-SP0
312 INFO: UPX is not available.
313 INFO: Extending PYTHONPATH with paths
['C:\\Users\\xxx\\PycharmProjects\\pythonProject1']
pygame 2.1.2 (SDL 2.0.18, Python 3.7.4)
Hello from the pygame community. https://www.pygame.org/contribute.html
896 INFO: checking Analysis
913 INFO: checking PYZ
927 INFO: checking PKG
931 INFO: Bootloader C:\Users\xxx\AppData\Roaming\Python\Python37\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe
931 INFO: checking EXE
打包spec文件时报错,有两种可能:
1、生成的spec文件有问题
2、修改的spec文件有问题
根据上述分析,首先需要进行一项测试。确认生成spec文件正常!
跳过第二步打包操作,查看是否能生成exe文件。
既然不修改spec文件,能正常打包就说明是我修改spec操作不对!
scripts
:命令行中命名的 python 脚本;
pure
:脚本所需的纯 python 模块;
pathex
:用于搜索导入的路径列表(如 using ),包括选项给出的路径。
binaries
:脚本所需的非 Python 模块,包括名称 由选项给出;
datas
:应用程序中包含的非二进制文件,包括给定的名称 通过选项。datas 采用元组(A,B):A,要打包的文件目录,B, 解压后该文件存放的目录(以 main.exe 解压目录为根)。
我的问题是spec文件Analysis 的 datas少了目标路径。修改后成功生成exe,且功能正常!
修改代码如下:
a = Analysis(
['snake.py'],
pathex=['C:\\Users\xxx\\PycharmProjects\\pythonProject1'],
binaries=[],
datas=[('C:\\Users\xxx\\PycharmProjects\\pythonProject1\\猫咪吃东西.wav', '.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
也许朋友使用pyinstaller报错的原因与我不同,但是朋友也可以根据以下步骤寻找答案:
本地环境python运行正常,调用文件的路径正确(绝对路径)
在需要打包的程序的目录上,依次输入如下打包命令:
pyinstaller -F -w xxx.py
pyinstaller xxx.spec
如果能正常生成exe,只不过运行报错,那么正确修改spec就行
反之pyinstaller程序有误,建议重新下载正确版本
下一篇:python pyinstaller打包常见问题(二):No file找不到文件解决办法
如果还是解决不了问题的话,可以评论区联系我。