【问题标题】:import win32api in python 3.7 resulting in dll import error在 python 3.7 中导入 win32api 导致 dll 导入错误
【发布时间】:2021-06-10 06:09:39
【问题描述】:

我在运行 jupyter notebook 时遇到错误。错误复制:

python --version
Python 3.7.9
python
import win32api

错误是:ImportError: DLL load failed 在做了一些stackoverflow之后,我知道有2个dll文件丢失了:pythoncom37.dllpywintypes37.dll

我还知道我可以在 Scripts 文件夹中运行这个 post 命令:pywin32_postinstall.py。我运行了这个脚本。重新启动了我的电脑。我手动下载了这两个dll并将其复制到我的system32。手动下载后开始出现不同类型的错误:ImportError: DLL load failed: %1 is not a valid Win32 application

我使用 anaconda 并运行我的 jupyter notebook,这是我的主要目标,但你能告诉我出了什么问题吗?

【问题讨论】:

  • 通常这是依赖 DLL 中的 32/64 位不匹配。
  • 我有 64 位 python。那我还应该检查什么?
  • 所有的依赖也是64位的。即您下载的 DLL。
  • 我下载了 64 位,但不确定其他的。但我通过删除 python 并重新安装 python 3.9.5 来解决它。即使我仍然不知道是什么问题

标签: python-3.x winapi jupyter-notebook dllimport


【解决方案1】:

我最近遇到过这种情况,但使用的是不同版本的 DLL。为我解决的问题是使用不同版本的 pywin32。 我的解决方案(conda env,python 3.8.5):

pip install pywin32==300

或尝试 225、227、228。最新的 pywin32(截至本文为 301)似乎存在 dll 搜索问题(如果您使用的任何版本也存在 dll 搜索问题,我不会感到惊讶)。 301 是在您的问题开始后发布的,但您可能仍然遇到类似的问题。

目前存在pywin32 DLL加载失败的问题:https://github.com/mhammond/pywin32/issues/1709

涉及的因素(根据我的经验)包括您的 PATH 变量(如果您使用的是 conda)。我自己没有测试过,但我很想知道这个问题是否在没有 conda 的情况下发生。如果找到的第一个 dll 是 301 的,这个问题就不会发生了。就我而言,这意味着将它们放在我的 C:\Windows\System32 文件夹中(是的,我在 Windows 上;很高兴)。

因此,可能的解决方案 #2 是运行 pywin32 安装后脚本,该脚本应位于您的 venv/Scripts/pywin32_postinstall.py 下

要尝试该解决方案,请打开 ADMIN 命令提示符(非常重要,它是管理员),导航到您的 venv,然后运行:

ppython.exe Scripts\pywin32_postinstall.py --install

您不应该这样做,但如果您只需要一个一次性的解决方案并且它有效,那就太好了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2016-07-01
    • 2019-06-06
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多