Python 试图将图标添加到我的可执行文件中,但保留声明的OSError[errono22]。不知道发生了什么事
py文件没有问题,因为pyinstaller在没有添加图标的情况下可以完美地工作。因此,我认为问题可能与.ico图标文件有关 有人有解决这个问题的办法吗?我正在尝试使用以下方式添加图标:Python 试图将图标添加到我的可执行文件中,但保留声明的OSError[errono22]。不知道发生了什么事,python,pyinstaller,Python,Pyinstaller,py文件没有问题,因为pyinstaller在没有添加图标的情况下可以完美地工作。因此,我认为问题可能与.ico图标文件有关 有人有解决这个问题的办法吗?我正在尝试使用以下方式添加图标: pyinstaller --onefile --windowed --icon=mysnake.ico SnakeGameGUI.py 以下是收到的错误: File "c:\users\BobJones\anaconda3\lib\site-packages/PyInstaller\utils\win32\i
pyinstaller --onefile --windowed --icon=mysnake.ico SnakeGameGUI.py
以下是收到的错误:
File "c:\users\BobJones\anaconda3\lib\site-packages/PyInstaller\utils\win32\icon.py", line 118, in __init__
file.seek(e.dwImageOffset, 0)
OSError: [Errno 22] Invalid argument
我看不出您的
pyinstaller
使用中有任何错误,因此,正如猜测的那样,问题肯定是使用的ico
文件mysnake.ico
您的ico
文件可能已损坏或与pyinstaller
处理该文件的方式不兼容
管理ico
文件时pyinstaller
做什么
pyinstaller
以二进制模式打开图标文件.ico
然后读取标题(6字节):
- idReserved(短/整数,2字节)
- idType(短/整数,2字节)
- idCount(短/整数,2字节)
- bWidth(带符号字符/整数,1字节)
- bHeight(带符号字符/整数,1字节)
- bColorCount(带符号字符/整数,1字节)
- bReserved(带符号字符/整数,1字节)
- wPlanes(短/整数,2字节)
- wBitCount(短/整数,2字节)
- dwBytesInRes(整数/整数,4字节)
- dwImageOffset(整数/整数,4字节)
dwImageOffset
和大小dwBytesInRes
读取图像本身
在您的情况下,dwImageOffset
似乎不是允许的值(正整数),因此会出现错误
您可以做些什么来解决您的问题
图标ico
文件很容易从基本图像(jpeg、png等)生成。
如果您决定重做ico
文件,我建议您执行该任务
mylogo.png
。(如果没有,可以尝试在GIMP中打开ico
文件mysnake.ico
,查看是否可以从中提取它)图像>缩放图像
,然后文件>导出为…
,创建具有不同分辨率的图像的多个版本:
mylogo_16x16.png
mylogo_32x32.png
mylogo_64x64.png
mylogo_128x128.png
文件>打开
,然后选择最高分辨率的图像文件>作为层打开…
,然后选择其他图像。以下是您应该得到的:
File>Export As…
,选择所需的ico
文件的名称,例如mylogo.ico