Python Pyinstaller错误代码ERRNO 22无效参数。

4

我想使用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。

还有人遇到过这个问题吗?我在论坛上看到类似的问题,但不是完全相同的问题。


1
我们所知道的是,由于某些未知原因,打开“build\TransmittalEXE\run.exe.d66z9a0v”失败了。不幸的是,io.open在异常中没有捕获C运行时的_doserrno值作为起源的winerror。无论实际发生了什么错误,都没有有用的C errno映射。它只是使用默认的EINVAL(22)错误代码映射。 - Eryk Sun
5个回答

12

我曾经遇到过同样的问题,解决方法是进入Windows防病毒保护选项,将脚本所在的文件夹添加为例外。

依次点击开始菜单 > 设置 > 更新和安全 > Windows 安全,然后选择病毒和威胁防护。 在病毒和威胁防护设置下,选择管理设置。 将包含所需脚本的文件夹添加为例外。


1
这对我解决了Windows Defender的问题。 - Kevin Shea
此设置可能因不同的防病毒软件而异。 - user3999721
由于某种原因,此时 Windows Defender 认为 pyinstall 是 Trojan:Script/Wacatac.B!ml,在路径 \AppData\Local\Temp\pip-unpack-2okgax43\pyinstaller-5.2-py3-none-win_amd64.whl 中。 - Glenn Carver

5

我花了几个小时搜索解决方案,几乎尝试了互联网上的每一个可能的解决方案。此外,我通过安装较低版本(pyinstaller v5.6.2)而不是最新版本来最终解决了问题,并且这对我起到了修复作用!


2
谢谢,pip install pyinstaller==5.6.2 像魔法一样奏效了! - Amir

1

如果不知道你正在将脚本更改为exe,那么很难猜测。你在关于错误的问题中附加的命令行片段也没有提供任何信息,正如@Eric Sunrightly所指出的那样。因此,在其他看似与你的问题无关的情况下,仍然需要给出错误的原因,希望通过联想来消除你和其他情况下的错误原因。最终,我找到了这个问题,寻求同样错误的答案。对我来说,导致错误的原因是提供可选参数- icon = app.ico。结果发现,扩展名为.ico的文件根本不是图标,而是另一种格式,只有通过更改扩展名才能更改。当我以正确的方式将保存在.png格式中的文件更改为.ico时,pyinstaller停止报告错误。


1
今天我遇到了同样的问题。我在Windows 10上使用Anaconda安装。最后,我尝试以管理员身份运行我的Anaconda提示符,并重新运行相同的pyinstaller命令。以管理员身份运行解决了我的问题。

0
我有一个类似的问题:
 [Errno 22] Invalid argument: 'C:\...\file.exe.notanexecutable'

但是只是删除后缀“.notanexecutable”就解决了问题。我成功地运行了可执行文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接