pyinstaller 时碰到 struct.error argument out of range
Posted on 2023-09-13 13:42 蝈蝈俊 阅读(874) 评论(0) 编辑 收藏 举报使用 PyInstaller 来打包 Python 程序,
pyinstaller -F --version-file file_version_info.txt aaa.py
并且在运行打包后的程序时遇到了这个错误:
struct.error argument out of range
它通常表示在使用 Python 的 struct 模块时,传递给 struct 函数的参数超出了其所能处理的范围。
错误
570708 INFO: Copying version information to EXE
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\env\fbt\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
File "D:\env\fbt\Lib\site-packages\PyInstaller\__main__.py", line 194, in _console_script_run
run()
File "D:\env\fbt\Lib\site-packages\PyInstaller\__main__.py", line 180, in run
run_build(pyi_config, spec_file, **vars(args))
File "D:\env\fbt\Lib\site-packages\PyInstaller\__main__.py", line 61, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "D:\env\fbt\Lib\site-packages\PyInstaller\building\build_main.py", line 1019, in main
build(specfile, distpath, workpath, clean_build)
File "D:\env\fbt\Lib\site-packages\PyInstaller\building\build_main.py", line 944, in build
exec(code, spec_namespace)
File "d:\mycode\tanghai\mellifera\MelliferaCMD.spec", line 24, in <module>
exe = EXE(
^^^^
File "D:\env\fbt\Lib\site-packages\PyInstaller\building\api.py", line 590, in __init__
self.__postinit__()
File "D:\env\fbt\Lib\site-packages\PyInstaller\building\datastruct.py", line 184, in __postinit__
self.assemble()
File "D:\env\fbt\Lib\site-packages\PyInstaller\building\api.py", line 694, in assemble
versioninfo.write_version_info_to_executable(build_name, self.versrsrc)
File "D:\env\fbt\Lib\site-packages\PyInstaller\utils\win32\versioninfo.py", line 593, in write_version_info_to_executable
win32api.UpdateResource(hdst, pefile.RESOURCE_TYPE['RT_VERSION'], 1, info.toRaw())
^^^^^^^^^^^^
File "D:\env\fbt\Lib\site-packages\PyInstaller\utils\win32\versioninfo.py", line 122, in toRaw
rawffi = self.ffi.toRaw()
^^^^^^^^^^^^^^^^
File "D:\env\fbt\Lib\site-packages\PyInstaller\utils\win32\versioninfo.py", line 247, in toRaw
return struct.pack(
^^^^^^^^^^^^
struct.error: argument out of range
我的 file_version_info.txt 是如下方式产生的。
import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile(
output_file="file_version_info.txt",
version="1.2.20230913.4",
company_name="My Imaginary Company",
file_description="Simple App",
internal_name="Simple App",
legal_copyright="© My Imaginary Company. All rights reserved.",
original_filename="SimpleApp.exe",
product_name="Simple App"
)
https://stackoverflow.com/questions/14624245/what-does-a-version-file-look-like
错误是在版本号这里:
版本号的每一部分(主版本, 次版本, 构建号, 修订号) 都应该是一个16位的数字,这意味着每部分的范围是0到65535。而上面的版本号中,20230913 超出了这个范围。
标签:
PyInstaller
, 版本号
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-09-13 LightGBM简单例子