如何修复'ImportError:导入win32api时DLL加载失败'

时间:2019-10-29 17:08:14

标签: python-3.x winapi pip

我正在Python 3.8中设置自动点击程序,并且我需要Win32api来获取GetAsyncKeyState,但这总是会给我这个错误

>>> import win32api
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing win32api: Impossibile trovare il modulo specificato.

我在Windows 10 Home 64x上已经尝试过 pip install pypiwin32 它可以成功安装,但没有任何变化,也尝试卸载并重新安装python。 我还尝试以相同的方式安装'django',并且在我import django时它实际上可以工作,所以我认为这仅是win32api问题。

>>> import win32api

我希望输出为空,但实际输出始终是该错误^^

[已解决] 首先,您不应该安装“ pypiwin32”,而应该仅安装“ pywin32”(如果之前安装过pypiwin,则为pip install -ignore-installed pywin32),然后在同一文件夹pywin32_postinstall.py -install中写入,并且win32api应该可以工作!

18 个答案:

答案 0 :(得分:23)

对于我来说,安装并重新安装pywin32并没有帮助。将两个文件从Lib\site-packages\pywin32_system32复制到C:\Windows\System32后,它可以工作。

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

答案 1 :(得分:12)

答案在 jupyter notebook github 中。 https://github.com/jupyter/notebook/issues/4980

conda install pywin32 为我工作。我使用的是 conda 发行版,而我的虚拟环境使用的是 Python 3.8

答案 2 :(得分:9)

在Admin命令提示符下运行Scripts \ pywin32_postinstall.py -install

ref:https://github.com/mhammond/pywin32/issues/1431

编辑:@JoyfulPanda用户发出了警告:

以管理员权限运行此脚本还将把pythoncom37.dll,pywintypes37.dll(与pywin32版本相对应)复制到C:\WINDOWS\system32中,这将有效地覆盖已经存在的Anaconda中的相应DLL版本。稍后在Windows上打开“开始菜单> Anaconda3(64位)> Anaconda提示(a_virtual_env_name)”时,这会引起问题。默认情况下,至少Anaconda 2019.07已安装pywin32 223。 Pywin32 224可以工作,但是225-228导致Anaconda(2019.07)出现问题

答案 3 :(得分:8)

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

pip install --upgrade pywin32==224

答案 4 :(得分:5)

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

pywin32(或其依赖项之一)在运行时将此路径添加到PATH变量。如果失败,或者由pywin32设置后另一个组件覆盖了PATH,您将得到给定的错误(ImportError:导入win32api时DLL加载失败)。

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

在Windows上:

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

在类似Unix的系统上:

export PATH=c:\...\Lib\site-packages\pywin32_system32:$PATH

如果这不起作用,则PATH可能会在运行时在Python程序中被覆盖。在使用pywin32验证其值之前,将以下行添加到程序中:

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

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

Windows:

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

Unix之类的

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

答案 5 :(得分:5)

已解决

如果您在conda环境中的miniconda中工作。您可以只使用conda而不是pip安装pywin32。

这解决了我的问题

conda安装pywin32

答案 6 :(得分:3)

根据pywin32 github,您必须运行

pip install pywin32

然后,您必须运行

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

取自here。为我工作!

答案 7 :(得分:2)

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

试试这个 --> pip install pywin32==225

希望它能解决您的问题

答案 8 :(得分:1)

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

pip uninstall pypiwin32
pip install pywin32

答案 9 :(得分:0)

版本 228 在 Windows 10 中最适合我

pip uninstall pywin32
pip install pywin32==228

答案 10 :(得分:0)

我在从 requirements.txt 重新创建 venv 时出现了这个问题。这个 venv 最初是在 Ubuntu Linux 上创建的,然后在 Win 10 上重新创建。

我不得不清除环境并再次手动安装everhing。为我工作。

答案 11 :(得分:0)

我在 Anaconda 中使用 Jupyter 遇到过这个问题。在遵循所有列出的建议之后,在没有清楚地了解我在做什么的情况下,除了一件事外,没有任何东西对我有用。我已经更新了 Anaconda 环境的索引,我的内核也回来了。 The screenshot

答案 12 :(得分:0)

pip install --upgrade pywin32==225

更新后它可以正常工作。

答案 13 :(得分:0)

Jupyter notebook github 有问题中提到的问题。提出了多种解决方案。

对我有用的是 this answer 加上额外的第一步:

  1. pip 卸载 pywin32
  2. pip 安装 pywin32
  3. python [环境路径]/Scripts/pywin32_postinstall.py -install

答案 14 :(得分:0)

我从以下位置下载并安装了最新的Microsoft Visual C ++ 2015-2019程序包 (https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)。安装后,您可能必须重新启动计算机。

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

在Scripts文件夹中后,运行以下命令 “ python pywin32_postinstall.py -install”

这会将所需的dll安装到虚拟环境中的相应文件夹中。

这就是我让它起作用的方式!

答案 15 :(得分:0)

当前在目录中有pythoncom * .dll文件的两个副本。 Pycharm正在使用目录C:\ Windows \ System32:-

中的副本

C:\ Windows \ System32 C:\ Users \ sharandi \ AppData \ Local \ Programs \ Python \ Python38 \ Lib \ site-packages \ pywin32_system32

文件为:- pythoncom38.dll-559 KB pywintypes38.dll-138 KB

答案 16 :(得分:0)

在此评论问题的引用中

此Lib \ site-packages \ pywin32_system32路径在哪里?

转到C目录,用户,您的用户名,anaconda3,库,站点软件包,pywin32_system32。您可以轻松找到。

C:\ Users \ HP \ anaconda3 \ Lib \ site-packages \ pywin32_system32

答案 17 :(得分:-1)

这很简单。经过多次尝试,我找到了解决方案。只需在 Windows 10 中键入以下命令。我使用的是 Pycharm,Python 版本 3.9

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

pip uninstall pywin32

pip install pywin32

这很简单。

如果这不起作用,请尝试:-

pip uninstall win32api
pip install win32api

尝试这些命令后,再次尝试前 2 个命令。

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