如何修复“重要错误: DLL 加载失败”,同时导入 win32api

我在 Python 3.8中设置了一个 autoclicker,我需要在 GetAsyncKeyState 中使用 win32api,但它总是给我一个错误:

>>> import win32api
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing win32api: The specified module could not be found.

我用的是 Windows 10 Home 64x 我已经试过了

pip install pypiwin32

它成功地安装,但没有任何改变。我也尝试卸载和重新安装 python。我也尝试用同样的方式安装“ django”,当我使用 import django的时候,它确实可以工作,所以我认为它只是一个 win32api 的问题。

>>> import win32api

我希望输出为零,但实际输出总是错误 ^ ^

156257 次浏览

pypiwin32是一个过时的发行版。卸载它并安装 pywin32:

pip uninstall pypiwin32
pip install pywin32

对于我的情况,安装和重新安装 pywin32没有帮助。在将这两个文件从 [installation directory of Anaconda]\Lib\site-packages\pywin32_system32复制到 C:\Windows\System32之后,它工作了。

我的环境是 miniconda 中的 python 3.8,这两个文件是 pythoncom38.dllpywintypes38.dll

在管理命令提示符下运行 Scripts pywin32 _ postinstall.py-install

档号: https://github.com/mhammond/pywin32/issues/1431

编辑: User@JoyfulPanda 发出警告:

使用管理员权限运行这个脚本还会将 pythoncom37.DLL,pywintypees37.DLL (对应于 pywin32版本)复制到 C:\WINDOWS\system32中,这会有效地覆盖来自阿纳康达的相应 dLL 版本。这会在打开(Windows 上)“开始菜单 > Anaconda3(64位) > Anaconda Prompt (a _ virtual _ env _ name)”时引起问题。默认情况下,Anaconda 2019.07至少安装了 pywin32223。Pywin32224可以工作,但是225-228会给水蟒带来问题(2019.07)

在此评论问题的参考文献中

这个 Lib 站点-包 pywin32 _ system32路径在哪里?

转到 C 目录,用户,你的用户名,anaconda3,库,站点包,pywin32 _ system32。你可以很容易地找到。

C: 用户 HP anaconda3 Lib 站点-包 pywin32 _ system32

对于我来说,它是通过将我的 pywin32从227版本降级到224版本来实现的。在管理员模式下,只需在任何 shell 上键入以下命令:

pip install --upgrade pywin32==224

Lib\site-packages\pywin32_system32不在要搜索 DLL (PATH 环境变量)的目录列表中时,就会发生这种情况。

Pywin32(或它的一个依赖项)在运行时将此路径添加到 PATH 变量。如果此操作失败,或者在 pywin32设置 PATH 之后,其他组件正在重写它,您将得到给定的错误(Import Error: DLL 加载失败,同时导入 win32api)。

在启动 Python 之前,可以尝试在 shell 中扩展 PATH 变量。

在 Windows 上:

set PATH=c:\...\Lib\site-packages\pywin32_system32;%PATH%

如果这不起作用,那么 PATH 可能会在运行时在 Python 程序中被覆盖。在使用 pywin32验证其值之前,向您的程序添加以下代码行:

import os
print(os.environ["PATH"])

作为最后的手段,您可以在加载 pywin32之前扩展 PATH 变量:

视窗:

os.environ["PATH"] = r"c:\...\pywin32_system32;" + os.environ["PATH"]

Unix 喜欢:

os.environ["PATH"] = r"/.../pywin32_system32:" + os.environ["PATH"]

根据 pywin32 github,您必须运行

pip install pywin32

在那之后,你必须逃跑

python path\to\python\Scripts\pywin32_postinstall.py -install

是从 给你公司拿来的,对我有用!

目前,在目录中有两个 pythoncom * . dll 文件的副本。 Pyarming 正在使用目录 C: WindowsSystem32:-中的副本

C: Windows System32 C: 用户 sharandi AppData 本地程序 Python Python 38 Lib 站点-包 pywin32 _ system32

这些文件是:- Pythoncom38.dll-559 KB Pywintypees38.dll-138KB

解决了

如果你在一个 conda 环境的 miniconda 中工作,你可以用 conda 代替 pip 安装 pywin32。

这解决了我的问题:

conda install pywin32

下载并安装了最新的 Microsoft Visual C + + 2015-2019包 (https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)。您可能必须在安装后重新启动您的机器。

然后从 conda 命令提示符激活您的虚拟环境并转到虚拟环境的 Scripts 文件夹(> cd“ path of venv”/Scripts)

进入 Scripts 文件夹后,运行以下命令 “ python pywin32 _ postinstall.py-install”

这将把所需的 dll 安装到虚拟环境中的适当文件夹中。

我就是这么成功的!

答案就在木星的笔记本里。 Https://github.com/jupyter/notebook/issues/4980

我使用的是 conda 发行版,我的虚拟环境使用的是 Python 3.8

Jupiter 笔记本 github 有问题中提到的问题,提出了多种解决方案。

对我起作用的是带有第一步的 这个答案:

  1. Pip 卸载 pywin32
  2. Pip 安装 pywin32
  3. Python [ Environment path ]/Scripts/pywin32 _ postinstall.py-install

对于 python 3.8.3,pywin32 = = 225适合我,现有的 pywin32 = = 228已经卸载。

试试这个

pip install pywin32==225

希望能解决你的问题

我在阿纳康达遇到了朱庇特的问题。在听取了所有列出的建议之后,如果不清楚自己在做什么,那么除了一件事之外,什么都不管用。我已经更新了 Anaconda 环境的索引,并且拿回了我的内核。截图

这很简单。经过多次尝试,我发现了一个解决方案。只需在 Windows10中键入以下命令。我正在使用 Pycharm,Python Version 3.9

注意:-这适用于所有 Python 版本! !

pip uninstall pywin32


pip install pywin32

这很简单。

如果这不管用,那么试试:-

pip uninstall win32api
pip install win32api

在尝试这些命令之后,再次尝试前两个命令。

如果还没有来,那么评论这个问题是什么问题! !

对我来说,这个问题发生在从 requments.txt 重新创建 venv 时。这个 venv 最初是在 UbuntuLinux 上创建的,然后在 Win10上重新创建。

我不得不清除环境和安装一切再次手动。为我做的工作。

在 Windows10中,版本228最适合我

pip uninstall pywin32
pip install pywin32==228

解决了

我尝试了多种方法卸载和重新安装 pywin32,但问题仍然存在。以下方法解决了这个问题:

pip install --upgrade jupyter_client
pip install --upgrade pywin32==224 --force-reinstall

我是迷你康达用户。在安装了一些 python 环境之后,我首先得到了这个错误,然后删除了它。所以我重新安装了 Jupyter 笔记本,它替换了一些丢失的文件,问题得到了解决。

conda install jupyter notebook

你应该试试我的一些(或全部)方法:

  1. 运行终端并使用以下命令: conda install pywin32

  2. [installation directory of Anaconda]\Lib\site-packages\pywin32_system32复制两个文件(此文件夹中只有2个文件)并粘贴到 C:\Windows\System32

    在我的示例中,这两个文件是 pythoncom38.dllpywintypes38.dll(这意味着我的 Python 版本是3.8)。

  3. 通过以下命令将 pywin32的版本降级到225或更低版本: pip install pywin32==225

Windows 10,Python 3.8,使用 Anaconda 的 PyWin32 v. 302

以下是对我有效的方法

打开一个提升的命令提示符激活环境

  • 视窗键
  • 输入 cmd
  • 右键单击 Command Prompt并单击“以管理员身份运行”
  • conda activate [ENVIRONMENT]

导航到安装 PyWin32的环境,如果使用 pip install 或 conda install,则工作正常

  • cd C:\Users\[USER]\anaconda3\envs\[ENVIRONMENT]\Scripts

运行安装 PyWin32时添加的安装后脚本

  • python pywin32_postinstall.py -install

嗨,这个问题我解决如下: 检查目录 C: WindowsSystem32,是否存在这些文件? Pythoncom37.dll pywintypees37.dll 或 pythoncom36.dll pywintypees36.dll 号码是巨蟒的版本。

  1. 如果该文件存在,请删除它。

然后这个问题就解决了。

截至2022年2月,pywin32的 tot303版降级解决了这个问题。

检查你的 pywin32版本:

pip show pywin32

降级至300版:

pip install pywin32==300 --upgrade

重启木星

是的,它的工作!

C:\ProgramData\Anaconda3>py Scripts\pywin32_postinstall.py -install

解析后的参数是: 命名空间(目的地 = ‘ C: ProgramData Anaconda3 Lib site-package’,install = True,static = False,move = False,still = False,wait = Nothing) 将 pythoncom38.dll 复制到 C: WINDOWS system 32 pythoncom38.dll 将 pywintypees38.dll 复制到 C: WINDOWS system 32 pywintypees38.dll 注册: 巨蟒,翻译 注册: Python 字典 注册: 巨蟒 - > 软件 Python PythonCore 3.8 Help [ Nothing ] = Nothing - > 软件 Python PythonCore 3.8 Help Pythonwin Reference [ None ] = ‘ C: ProgramData Anaconda3 Lib site-package PyWin32.chm’ 已注册的帮助文件 Python 已在上下文菜单中注册 创建目录 C: ProgramData Anaconda3 Lib site-package win32com gen _ py 不能安装快捷方式-“ C: ProgramData Microsoft Windows Start Menu Programs Python 3.8”不是文件夹 成功安装了 pywin32扩展。

您应该进入文件夹 {python folder path}/Lib/site-packages/pywin32_system32并将 pythoncomXX.dllpywintypesXX.dll复制到文件夹 C:/Windows/System32

如果您使用的是虚拟环境,那么 {python folder path}就是虚拟环境使用的 Python 文件夹,否则它就是全局 python 所在的文件夹。例如,我使用 conda 创建一个名为 Frameless-Window的虚拟环境,并在这个虚拟环境中安装包 pywin32,那么我计算机上的 {python folder path}应该是 D:/Anaconda/envs/Frameless-Window

将 dll 复制到 System32文件夹时应该非常小心。如果文件夹中有同名的 dls,而其他虚拟环境中的 pywin32可能会使用这两个 dls,替换原来的 dls 可能会导致这个虚拟环境出现同样的 Import Error 问题。经过测试,我发现227、228和300版本的 pywin32的 dll 可以互相替换,301、302、303和304版本的 pywin32的 dll 也可以互相替换,但是如果300版本的 dll 被301版本的 dll 替换,就会产生 Import Error。

帮助我的是

  1. Github.com/mhammond/pywin32安装相关的二进制文件
  2. 在 x64命令行中执行以下命令:

Cd C: ProgramData Anaconda3脚本

Python pywin32 _ postinstall.py-install

如果您正在从另一个虚拟 env 启动一个虚拟 env。确保在 都有 envs 中安装 Pywin32。因为这个浪费了太多时间。

这招对我很管用 Conda install-c anaconda pywin32