How to fix "ImportError: DLL load failed" while importing win32api
How to fix "ImportError: DLL load failed" while importing win32api
我正在 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: The specified module could not be found.
我在 Windows 10 Home 64x。我已经试过了
pip install pypiwin32
安装成功,但没有任何变化。我也尝试卸载并重新安装 python。我也尝试以同样的方式安装 'django',当我 import django
时它确实有效,所以我认为这只是一个 win32api 问题。
>>> import win32api
我希望输出是none,但实际输出总是那个错误^^
pypiwin32
是一个过时的发行版。卸载并安装 pywin32
:
pip uninstall pypiwin32
pip install pywin32
就我而言,安装并重新安装 pywin32 没有帮助。将 [installation directory of Anaconda]\Lib\site-packages\pywin32_system32
中的两个文件复制到 C:\Windows\System32
后,就可以了。
我的环境是 python miniconda 3.8。这两个文件是 pythoncom38.dll
和 pywintypes38.dll
.
运行 Scripts\pywin32_postinstall.py - 在管理员命令提示符下安装
参考:https://github.com/mhammond/pywin32/issues/1431
编辑:用户@JoyfulPanda 发出警告:
Running this script with admin rights will also copy pythoncom37.dll, pywintypes37.dll (corresponding to the pywin32 version), into C:\WINDOWS\system32
, which effectively overwrites the corresponding DLL versions from Anaconda already there. This later causes problem when openning (on Windows) "Start Menu > Anaconda3 (64-bit) > Anaconda Prompt (a_virtual_env_name)". At least Anaconda 2019.07 has pywin32 223 installed by default. Pywin32 224 may work, but 225-228 causes problem for Anaconda (2019.07)
在这个评论问题的引用中
where is this Lib\site-packages\pywin32_system32 path?
转到 C 目录,Users,你的用户名,anaconda3,Lib,site-packages,pywin32_system32。你可以很容易地找到。
C:\Users\HP\anaconda3\Lib\site-packages\pywin32_system32
对我来说,它通过将我的 pywin32 从版本 227 降级到版本 224 来工作。只需在管理员模式下的任何 shell 上键入以下命令:
pip install --upgrade pywin32==224
当 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%
如果这不起作用,则 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"]
根据 pywin32 github 你必须 运行
pip install pywin32
然后,你必须运行
python path\to\python\Scripts\pywin32_postinstall.py -install
取自here。对我有用!
目前目录中有两份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
已解决
如果您在 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)
进入脚本文件夹后 运行 执行以下命令
“python pywin32_postinstall.py - 安装”
这会将所需的 dll 安装到虚拟环境中的相应文件夹中。
这就是我让它工作的方式!
答案在 jupyter notebook 中 github。
https://github.com/jupyter/notebook/issues/4980
conda install pywin32
对我有用。我正在使用 conda 发行版,我的虚拟环境正在使用 Python 3.8
Jupyter notebook github有问题中提到的问题。提出了多种解决方案。
对我有用的是 this answer 加上额外的第一步:
- pip 卸载 pywin32
- pip 安装 pywin32
- python [环境路径]/Scripts/pywin32_postinstall.py -install
对于 python 3.8.3,pywin32==225 对我有用,现有的 pywin32==228 已卸载。
所以试试这个
pip install pywin32==225
希望它能解决您的问题
我在 Anaconda 中遇到过 Jupyter 的这个问题。在遵循了所有列出的建议之后,在没有清楚地了解我在做什么的情况下,除了一件事之外,没有任何事情对我有用。我已经更新了 Anaconda 环境的索引并且我已经找回了我的内核。 The screenshot
很简单。经过多次尝试,我发现了一个解决方案。只需在 Windows 10 中键入以下命令。我正在使用 Pycharm、Python 版本 3.9
注意:- 这适用于所有 Python 版本 !!
pip uninstall pywin32
pip install pywin32
很简单。
如果不行,那就试试:-
pip uninstall win32api
pip install win32api
尝试这些命令后,再次尝试前 2 个命令。
如果还没有出现,请评论这个问题是什么问题!!
我在从 requirements.txt 重新创建 venv 时出现了这个问题。此 venv 最初是在 Ubuntu Linux 上创建的,然后在 Win 10 上重新创建。
我不得不清理环境并再次手动安装 everyrhing。对我有用吗。
版本 228 在 Windows 10
中最适合我
pip uninstall pywin32
pip install pywin32==228
已解决
我尝试了 pywin32
多种卸载和重新安装的方法,但问题仍然存在。以下方法解决了问题:
pip install --upgrade jupyter_client
pip install --upgrade pywin32==224 --force-reinstall
我是miniconda用户。我在安装了一些 python 环境然后删除它之后首先遇到了这个错误。所以我重新安装了 jupyter 笔记本,它替换了一些丢失的文件,问题就解决了。
conda install jupyter notebook
你应该尝试我的一些(或全部)方法:
运行 终端并使用此命令:conda install pywin32
.
正在从 [installation directory of Anaconda]\Lib\site-packages\pywin32_system32
复制两个文件(此文件夹中只有 2 个文件)并粘贴到 C:\Windows\System32
.
在我的例子中,这两个文件是pythoncom38.dll
和pywintypes38.dll
(这意味着我的Python版本是3.8)。
通过此命令将 pywin32 版本降级到 225 或更低:pip install pywin32==225
.
Windows 10,Python 3.8,PyWin32 v.302 使用 Anaconda
这是对我有用的方法
打开提升的命令提示符激活环境
- Windows 键
- 键入 cmd
- 右键单击
Command Prompt
并单击 运行 作为管理员
conda activate [ENVIRONMENT]
导航到安装 PyWin32 的环境,如果使用 pip install 或 conda install 则有效
cd C:\Users\[USER]\anaconda3\envs\[ENVIRONMENT]\Scripts
运行安装PyWin32时添加的post安装脚本
python pywin32_postinstall.py -install
你好这个问题我解决如下:
1.check目录C:\Windows\System32,是否存在这些文件?
pythoncom37.dll pywintypes37.dll 或 pythoncom36.dll pywintypes36.dll
编号是 python 版本 .
- 如果文件存在删除它。
然后这个问题就解决了
自 2022 年 2 月起,将 pywin32
的 tot 版本 303 降级即可解决该问题。
检查你的pywin32版本:
pip show pywin32
降级到版本 300:
pip install pywin32==300 --upgrade
重启 Jupyter
是的,它有效!
C:\ProgramData\Anaconda3>py Scripts\pywin32_postinstall.py -install
解析的参数是:Namespace(destination='C:\ProgramData\Anaconda3\Lib\site-packages', install=True, quiet=False, remove=False, silent=False, wait=None)
已将 pythoncom38.dll 复制到 C:\WINDOWS\system32\pythoncom38.dll
已将 pywintypes38.dll 复制到 C:\WINDOWS\system32\pywintypes38.dll
已注册:Python.Interpreter
已注册:Python.Dictionary
已注册:Python
-> Software\Python\PythonCore.8\Help[None]=None
-> Software\Python\PythonCore.8\Help\Pythonwin参考[None]='C:\ProgramData\Anaconda3\Lib\site-packages\PyWin32.chm'
注册帮助文件
Pythonwin 已在上下文菜单中注册
创建目录 C:\ProgramData\Anaconda3\Lib\site-packages\win32com\gen_py
无法安装快捷方式 - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.8' 不是文件夹
pywin32 扩展已成功安装。
您应该进入文件夹 {python folder path}/Lib/site-packages/pywin32_system32
并将 pythoncomXX.dll
和 pywintypesXX.dll
复制到文件夹 C:/Windows/System32
.
如果你使用的是虚拟环境,那么{python folder path}
就是虚拟环境使用的python文件夹,否则就是全局python所在的文件夹。比如我用conda创建了一个虚拟环境叫Frameless-Window
,在这个虚拟环境中安装包pywin32
,那么我电脑上的{python folder path}
应该是D:/Anaconda/envs/Frameless-Window
。
将dll复制到System32文件夹时要格外小心。如果文件夹中有同名的dll,而你的其他虚拟环境中的pywin32可能会用到这两个dll,更换原来的dll可能会导致这个虚拟环境出现同样的ImportError问题。经过测试,发现227、228、300版本的pywin32的dll可以相互替换,301、302、303、304版本的pywin32的dll也可以相互替换,但是如果dll 300版本的替换为301版本的dll,会引发ImportError。
我正在 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: The specified module could not be found.
我在 Windows 10 Home 64x。我已经试过了
pip install pypiwin32
安装成功,但没有任何变化。我也尝试卸载并重新安装 python。我也尝试以同样的方式安装 'django',当我 import django
时它确实有效,所以我认为这只是一个 win32api 问题。
>>> import win32api
我希望输出是none,但实际输出总是那个错误^^
pypiwin32
是一个过时的发行版。卸载并安装 pywin32
:
pip uninstall pypiwin32
pip install pywin32
就我而言,安装并重新安装 pywin32 没有帮助。将 [installation directory of Anaconda]\Lib\site-packages\pywin32_system32
中的两个文件复制到 C:\Windows\System32
后,就可以了。
我的环境是 python miniconda 3.8。这两个文件是 pythoncom38.dll
和 pywintypes38.dll
.
运行 Scripts\pywin32_postinstall.py - 在管理员命令提示符下安装
参考:https://github.com/mhammond/pywin32/issues/1431
编辑:用户@JoyfulPanda 发出警告:
Running this script with admin rights will also copy pythoncom37.dll, pywintypes37.dll (corresponding to the pywin32 version), into
C:\WINDOWS\system32
, which effectively overwrites the corresponding DLL versions from Anaconda already there. This later causes problem when openning (on Windows) "Start Menu > Anaconda3 (64-bit) > Anaconda Prompt (a_virtual_env_name)". At least Anaconda 2019.07 has pywin32 223 installed by default. Pywin32 224 may work, but 225-228 causes problem for Anaconda (2019.07)
在这个评论问题的引用中
where is this Lib\site-packages\pywin32_system32 path?
转到 C 目录,Users,你的用户名,anaconda3,Lib,site-packages,pywin32_system32。你可以很容易地找到。
C:\Users\HP\anaconda3\Lib\site-packages\pywin32_system32
对我来说,它通过将我的 pywin32 从版本 227 降级到版本 224 来工作。只需在管理员模式下的任何 shell 上键入以下命令:
pip install --upgrade pywin32==224
当 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%
如果这不起作用,则 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"]
根据 pywin32 github 你必须 运行
pip install pywin32
然后,你必须运行
python path\to\python\Scripts\pywin32_postinstall.py -install
取自here。对我有用!
目前目录中有两份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
已解决
如果您在 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)
进入脚本文件夹后 运行 执行以下命令 “python pywin32_postinstall.py - 安装”
这会将所需的 dll 安装到虚拟环境中的相应文件夹中。
这就是我让它工作的方式!
答案在 jupyter notebook 中 github。 https://github.com/jupyter/notebook/issues/4980
conda install pywin32
对我有用。我正在使用 conda 发行版,我的虚拟环境正在使用 Python 3.8
Jupyter notebook github有问题中提到的问题。提出了多种解决方案。
对我有用的是 this answer 加上额外的第一步:
- pip 卸载 pywin32
- pip 安装 pywin32
- python [环境路径]/Scripts/pywin32_postinstall.py -install
对于 python 3.8.3,pywin32==225 对我有用,现有的 pywin32==228 已卸载。
所以试试这个
pip install pywin32==225
希望它能解决您的问题
我在 Anaconda 中遇到过 Jupyter 的这个问题。在遵循了所有列出的建议之后,在没有清楚地了解我在做什么的情况下,除了一件事之外,没有任何事情对我有用。我已经更新了 Anaconda 环境的索引并且我已经找回了我的内核。 The screenshot
很简单。经过多次尝试,我发现了一个解决方案。只需在 Windows 10 中键入以下命令。我正在使用 Pycharm、Python 版本 3.9
注意:- 这适用于所有 Python 版本 !!
pip uninstall pywin32
pip install pywin32
很简单。
如果不行,那就试试:-
pip uninstall win32api
pip install win32api
尝试这些命令后,再次尝试前 2 个命令。
如果还没有出现,请评论这个问题是什么问题!!
我在从 requirements.txt 重新创建 venv 时出现了这个问题。此 venv 最初是在 Ubuntu Linux 上创建的,然后在 Win 10 上重新创建。
我不得不清理环境并再次手动安装 everyrhing。对我有用吗。
版本 228 在 Windows 10
中最适合我pip uninstall pywin32
pip install pywin32==228
已解决
我尝试了 pywin32
多种卸载和重新安装的方法,但问题仍然存在。以下方法解决了问题:
pip install --upgrade jupyter_client
pip install --upgrade pywin32==224 --force-reinstall
我是miniconda用户。我在安装了一些 python 环境然后删除它之后首先遇到了这个错误。所以我重新安装了 jupyter 笔记本,它替换了一些丢失的文件,问题就解决了。
conda install jupyter notebook
你应该尝试我的一些(或全部)方法:
运行 终端并使用此命令:
conda install pywin32
.正在从
[installation directory of Anaconda]\Lib\site-packages\pywin32_system32
复制两个文件(此文件夹中只有 2 个文件)并粘贴到C:\Windows\System32
.在我的例子中,这两个文件是
pythoncom38.dll
和pywintypes38.dll
(这意味着我的Python版本是3.8)。通过此命令将 pywin32 版本降级到 225 或更低:
pip install pywin32==225
.
Windows 10,Python 3.8,PyWin32 v.302 使用 Anaconda
这是对我有用的方法
打开提升的命令提示符激活环境
- Windows 键
- 键入 cmd
- 右键单击
Command Prompt
并单击 运行 作为管理员 conda activate [ENVIRONMENT]
导航到安装 PyWin32 的环境,如果使用 pip install 或 conda install 则有效
cd C:\Users\[USER]\anaconda3\envs\[ENVIRONMENT]\Scripts
运行安装PyWin32时添加的post安装脚本
python pywin32_postinstall.py -install
你好这个问题我解决如下: 1.check目录C:\Windows\System32,是否存在这些文件? pythoncom37.dll pywintypes37.dll 或 pythoncom36.dll pywintypes36.dll 编号是 python 版本 .
- 如果文件存在删除它。
然后这个问题就解决了
自 2022 年 2 月起,将 pywin32
的 tot 版本 303 降级即可解决该问题。
检查你的pywin32版本:
pip show pywin32
降级到版本 300:
pip install pywin32==300 --upgrade
重启 Jupyter
是的,它有效!
C:\ProgramData\Anaconda3>py Scripts\pywin32_postinstall.py -install
解析的参数是:Namespace(destination='C:\ProgramData\Anaconda3\Lib\site-packages', install=True, quiet=False, remove=False, silent=False, wait=None) 已将 pythoncom38.dll 复制到 C:\WINDOWS\system32\pythoncom38.dll 已将 pywintypes38.dll 复制到 C:\WINDOWS\system32\pywintypes38.dll 已注册:Python.Interpreter 已注册:Python.Dictionary 已注册:Python -> Software\Python\PythonCore.8\Help[None]=None -> Software\Python\PythonCore.8\Help\Pythonwin参考[None]='C:\ProgramData\Anaconda3\Lib\site-packages\PyWin32.chm' 注册帮助文件 Pythonwin 已在上下文菜单中注册 创建目录 C:\ProgramData\Anaconda3\Lib\site-packages\win32com\gen_py 无法安装快捷方式 - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.8' 不是文件夹 pywin32 扩展已成功安装。
您应该进入文件夹 {python folder path}/Lib/site-packages/pywin32_system32
并将 pythoncomXX.dll
和 pywintypesXX.dll
复制到文件夹 C:/Windows/System32
.
如果你使用的是虚拟环境,那么{python folder path}
就是虚拟环境使用的python文件夹,否则就是全局python所在的文件夹。比如我用conda创建了一个虚拟环境叫Frameless-Window
,在这个虚拟环境中安装包pywin32
,那么我电脑上的{python folder path}
应该是D:/Anaconda/envs/Frameless-Window
。
将dll复制到System32文件夹时要格外小心。如果文件夹中有同名的dll,而你的其他虚拟环境中的pywin32可能会用到这两个dll,更换原来的dll可能会导致这个虚拟环境出现同样的ImportError问题。经过测试,发现227、228、300版本的pywin32的dll可以相互替换,301、302、303、304版本的pywin32的dll也可以相互替换,但是如果dll 300版本的替换为301版本的dll,会引发ImportError。