【问题标题】:Python Pyinstaller ERRNO 22 Invalid ArgumentPython Pyinstaller ERRNO 22 无效参数
【发布时间】:2020-09-25 22:40:36
【问题描述】:

我正在尝试使用 pyinstaller 使我的 python 代码更加用户友好,直到昨天,它还在工作。当我今天运行它时,我得到了以下错误:

C:\Users\user\Desktop\PythonProjects38>pyinstaller --onefile TransmittalEXE.py
83 INFO: PyInstaller: 4.0
83 INFO: Python: 3.8.5
83 INFO: Platform: Windows-10-10.0.18362-SP0
84 INFO: wrote C:\Users\user\Desktop\PythonProjects38\TransmittalEXE.spec
...
31623 INFO: checking PKG
31623 INFO: Building PKG because PKG-00.toc is non existent
31628 INFO: Building PKG (CArchive) PKG-00.pkg
41852 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
41915 INFO: Bootloader c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run.exe
41915 INFO: checking EXE
41917 INFO: Building EXE because EXE-00.toc is non existent
41921 INFO: Building EXE from EXE-00.toc
41927 INFO: Updating manifest in C:\Users\user\Desktop\PythonProjects38\build\TransmittalEXE\run.exe.d66z9a0v
42037 INFO: Updating resource type 24 name 1 language 0
42050 INFO: Appending archive to EXE C:\Users\user\Desktop\PythonProjects38\dist\TransmittalEXE.exe
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\Desktop\PythonProjects38\pyinstaller.exe\__main__.py", line 7, in <module>
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\__main__.py", line 114, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\__main__.py", line 65, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\building\build_main.py", line 720, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\building\build_main.py", line 667, in build
    exec(code, spec_namespace)
  File "C:\Users\user\Desktop\PythonProjects38\TransmittalEXE.spec", line 20, in <module>
    exe = EXE(pyz,
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\building\api.py", line 446, in __init__
    self.__postinit__()
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\building\datastruct.py", line 160, in __postinit__
    self.assemble()
  File "c:\users\user\desktop\pythonprojects38\venv\lib\site-packages\PyInstaller\building\api.py", line 622, in assemble
    with open(exe, 'rb') as infh:
OSError: [Errno 22] Invalid argument: 'C:\\Users\\user\\Desktop\\PythonProjects38\\build\\TransmittalEXE\\run.exe.d66z9a0v'

为了获得更多参考,我尝试卸载并重新安装 pyinstaller 和 pywin32 无济于事。我的命令提示符条目是 pyinstaller --onefile TransmittalEXE.py。

还有其他人遇到过这个问题吗?我在这个论坛上看到过类似的问题,但不是这个确切的问题。

【问题讨论】:

  • 我们只知道打开“build\TransmittalEXE\run.exe.d66z9a0v”由于某种未知原因而失败。不幸的是,io.open 没有将异常中的 C 运行时的_doserrno 值捕获为原始winerror。无论实际发生什么错误,都没有有用的 C errno 映射。它只是使用默认的EINVAL (22) 错误代码映射。

标签: python windows pyinstaller


【解决方案1】:

我遇到了同样的问题,我可以通过转到 Windows 防病毒保护选项并添加我的脚本作为例外的文件夹来解决它。

转到“开始”>“设置”>“更新和安全”>“Windows 安全”,然后选择“病毒和威胁防护”。 在病毒和威胁防护设置下,选择管理设置。 添加带有所需脚本的文件夹作为例外。

【讨论】:

  • 这解决了我使用 Windows Defender 的问题。
  • 此设置可能因不同的防病毒软件而异。
【解决方案2】:

在不知道要转换为 exe 的脚本的情况下,很难猜到。正如@Eric Sunrightly 指出的那样,您关于错误的问题中命令行的附加切片也没有说明任何内容。因此,在其他似乎不一定与您的问题相关的情况下,仍然要给出错误的原因,希望通过关联可以消除您的错误的原因,也许在其他情况下。最终,我发现这个问题正在寻找相同错误的答案。对我来说,错误的原因是提供了可选参数 –icon=app.ico。原来,扩展名为 .ico 的文件根本不是一个图标,而是一种不同的格式,只改变了扩展名。当我更改格式保存的文件时。 png到.ico的正确方式pyinstaller停止报错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2021-02-10
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多