在python 3.7中导入win32api导致dll导入错误

问题描述 投票:0回答:4

我在运行 jupyter 笔记本时遇到错误。错误复制:

python --version
Python 3.7.9
python
import win32api

错误是:

ImportError: DLL load failed
在做了一些 stackoverflow 之后,我发现缺少 2 个 dll 文件,即:
pythoncom37.dll
pywintypes37.dll

我还知道我可以在 Scripts 文件夹中运行此 post 命令:

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

我使用了 anaconda 并运行了我的 jupyter 笔记本,这是我的主要目标,但是你能让我知道出了什么问题吗?

python-3.x winapi jupyter-notebook dllimport
4个回答
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 的 dll,那么这个问题就不再发生。就我而言,这意味着将它们放在我的 C:\Windows\System32 文件夹中(是的,我在 Windows 上;高兴)。

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

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

ppython.exe Scripts\pywin32_postinstall.py --install

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


0
投票

pip install --upgrade pywin32 ==225
为我工作。尝试过300版本,不成功。


0
投票
仅供参考:我花了几个小时在这个“乐趣”上。最后证明 Python 3.8 运行得很好(正确执行了“import win32com.client”行)——而

问题是 Spyder。我卸载并重新安装了最新版本,一切都开始工作了。去算一下...


0
投票
在可能的情况下帮助“以管理员身份”启动exe应用程序

© www.soinside.com 2019 - 2024. All rights reserved.