Python “如何修复”;导入错误:DLL加载失败“;导入win32api时
我正在Python 3.8中设置一个自动单击程序,我需要用于GetAsyncKeyState的win32api,但它总是给我以下错误:Python “如何修复”;导入错误:DLL加载失败“;导入win32api时,python,python-3.x,winapi,pip,pywin32,Python,Python 3.x,Winapi,Pip,Pywin32,我正在Python 3.8中设置一个自动单击程序,我需要用于GetAsyncKeyState的win32api,但它总是给我以下错误: >>> import win32api Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: DLL load failed while importing win32api: The specified
>>> 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.
它成功地安装了,但没有任何变化。我也尝试卸载和重新安装python。我也尝试过以同样的方式安装“django”,当我导入django时,它实际上可以工作,所以我认为这只是win32api的问题
>>> import win32api
我希望输出为无,但实际输出总是错误^^
pypiwin32
是一个过时的发行版。卸载它并安装pywin32
:
pip uninstall pypiwin32
pip install pywin32
对于我来说,安装并重新安装pywin32没有帮助。将这两个文件从
[Anaconda的安装目录]\Lib\site packages\pywin32\u system32
复制到C:\Windows\system32
后,它就可以工作了
我的环境是miniconda中的python 3.8。这两个文件是
pythoncom38.dll
和pywintypes38.dll
runscripts\pywin32\u postinstall.py-在管理命令提示符下安装
参考:
编辑:User@JoyfulPanda发出警告:
使用管理员权限运行此脚本还会将pythoncom37.dll、pywintypes37.dll(对应于pywin32版本)复制到
C:\WINDOWS\system32
,从而有效地覆盖已有Anaconda的相应dll版本。这会在打开(Windows上)“开始菜单>蟒蛇3(64位)>蟒蛇提示(虚拟环境名称)”时导致问题。默认情况下,至少Anaconda 2019.07安装了pywin32 223。Pywin32 224可能有效,但225-228会给蟒蛇带来问题(2019.07)
在该评论问题的参考中 这个Lib\site packages\pywin32\u system32路径在哪里 转到C目录,用户,用户名,anaconda3,Lib,站点包,pywin32_system32。你很容易找到
C:\Users\HP\anaconda3\Lib\site packages\pywin32\u system32对我来说,它将我的pywin32从227版降级到224版。只需在管理员模式下的任意shell上键入以下命令:
pip install --upgrade pywin32==224
当
Lib\site packages\pywin32\u system32
不在要搜索DLL(路径环境变量)的目录列表中时,会发生这种情况
pywin32(或其依赖项之一)在运行时将此路径添加到path变量。如果此操作失败,或者在pywin32设置路径后另一个组件正在重写该路径,您将收到给定的错误(ImportError:导入Win32 API时DLL加载失败)
在启动Python之前,可以尝试在shell中扩展PATH变量
在Windows上:
set PATH=c:\...\Lib\site-packages\pywin32_system32;%PATH%
在类Unix系统上:
export PATH=c:\...\Lib\site-packages\pywin32_system32:$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
在那之后,你必须跑
pip install pywin32
python path\to\python\Scripts\pywin32_postinstall.py -install
摘自。为我工作 当前目录中有两个pythoncom*.dll文件的副本。 Pycharm正在使用目录C:\Windows\System32中的副本:- C:\Windows\System32 C:\Users\sharandi\AppData\Local\Programs\Python38\Lib\site packages\pywin32\u system32 这些文件是:- pythoncom38.dll-559 KB
pywintypes38.dll-138 KB已解决 如果您在conda上的miniconda环境中工作。您可以使用conda而不是pip安装pywin32 这解决了我的问题
安装PyWi32
< P> i下载并安装了最新的微软Visual C++ 2015-2019包 (). 安装后,您可能必须重新启动计算机 然后从conda命令提示符激活您的虚拟环境并转到虚拟环境的脚本文件夹(>cd“venv路径”/Scripts) 进入脚本文件夹后,运行以下命令 “python pywin32_postinstall.py-安装” 这将把所需的dll安装到虚拟环境中的相应文件夹中我就是这样让它工作的 答案在jupyter笔记本github中。
conda安装pywin32
适合我。我使用的是conda发行版,我的虚拟环境使用的是Python3.8,问题中提到了这个问题。提出了多种解决方案
对我有效的是额外的第一步:
对于python3.8.3,pywin32==225适合我,现有的pywin32==228被卸载 因此,请尝试此-->pip安装pywin32==225
希望它能解决您的问题谢谢,但不幸的是,一切都没有改变。。以下是我所做的
成功卸载pypiwin32-223 C:\Users\gfroz\AppData\Local\Programs\Python\Python38-32\Scripts>pip安装pywin32的要求已经满足:pywin32在C:\Users\gfroz\AppData\Local\Programs\Python\Python38-32\lib\site软件包(225)
,然后>>导入Win32 API回溯(最后一次调用):文件“”,第1行,在导入win32api:Importable trovare il modulo specificato时,DLL加载失败代码>尝试重新安装;在您对不同软件包进行了所有实验之后,DLL可能会被破坏:pip安装——忽略已安装的pywin32
非常感谢!实际上,当我刚安装pywin32时,它不起作用,但后来我在脚本文件夹pywin32\u postinstall.py-install
,然后我尝试导入win32api
,但没有出现错误!pywin32_postinstall.py所做的所有工作都是将pywintypes[pyton version].dll和pythoncom[pyver].dll从\Lib\site packages\pywin32_system32\复制到主目录中。实际上,最好只是手动复制到\Library\bin。然后一切都会好起来。在哪里