首页 > 解决方案 > 不断收到错误“OSError:[WinError 193] %1 不是有效的 Win32 应用程序”

问题描述

我正在尝试按照以下视频中的说明为 StyleGan 项目创建自定义数据集:https ://youtube.com/watch?v=QBUFrep8ljI

但是当我运行命令构建数据集时

python dataset_tool.py create_from_images datasets/custom_dataset ./chrimg

我收到以下错误:

File "dataset_tool.py", line 18, in <module>
import numpy as np
  File "F:\Program Files\Python3\lib\site-packages\numpy\__init__.py", line 140, in <module>
from . import _distributor_init
   File "F:\Program Files\Python3\lib\site-packages\numpy\_distributor_init.py", line 26, in <module>
WinDLL(os.path.abspath(filename))
  File "F:\Program Files\Python3\lib\ctypes\__init__.py", line 364, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application

每一步我都会遇到一些新的错误,我已经设法弄清楚了,但我对此一无所知。

标签: python-3.xdeep-learninggenerative-adversarial-network

解决方案


此错误表示该文件的 EXE 格式错误。在 Windows 操作系统文件(如 exe、dll、sys)中具有 PE​​ 格式 - https://docs.microsoft.com/en-us/windows/win32/debug/pe-format 在您的情况下,Python 代码尝试加载 DLL在这行代码中:

self._handle = _dlopen(self._name, mode)

我相信 _dlopen 在内部使用来自 Windows API 的 LoadLibrary 会产生此错误,并且可能有以下原因:

  1. LoadLibrary 试图加载 dll 文件已损坏
  2. dll 文件和 phython 具有不同的体系结构(例如,您的 python 是 x86 而 dll 是 x64)。您可以使用procmon实用程序找出游戏中的确切文件。此外,您可以使用sigcheck来确定架构或此方法 - https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows

推荐阅读