How to fix "ImportError: DLL load failed" while importing win32api
Asked Answered
D

33

83

I'm setting up an autoclicker in Python 3.8 and I need win32api for GetAsyncKeyState but it always gives me this error:

>>> 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.

I'm on Windows 10 Home 64x. I've already tried

pip install pypiwin32

And it successfully installs but nothing changes. I tried uninstalling and re-installing python as well. I also tried installing 'django' in the same way and it actually works when I import django, so I think it's a win32api issue only.

>>> import win32api

I expect the output to be none, but the actual output is always that error ^^

Druse answered 29/10, 2019 at 17:8 Comment(3)
Make sure you don't have a dependency conflict! I installed pywin32 via pip and it conflicted with my Conda installation.Philippic
I think it happened because of missing pywin32 extensions.Anticatalyst
ImportError: DLL load failed while importing fputs: 找不到指定的模块。Century
G
39

Run Scripts\pywin32_postinstall.py -install in an Admin command prompt

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

edit: User @JoyfulPanda gave a warning:

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)

Gastrotomy answered 9/4, 2020 at 20:16 Comment(4)
To run pywin32_postinstall.py, you need to python pywin32_postinstall.py -install, else you'll get an importerror about winregRejoice
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).Defluxion
pip install --upgrade pywin32==225 worked for me..ThxDenver
@Denver solution worked for me too as of 2021-06-04Ashjian
S
103

Solved

If you are working in a miniconda on conda environment. You could just install pywin32 using conda instead of pip.

This solved my problem:

conda install pywin32
Sita answered 14/10, 2020 at 18:54 Comment(4)
Thanks, this solved the issue for me. I'm using miniconda.Broody
Worked for me on Win10, Python 3.9 and Miniforge.Amortization
I had to install it within a given conda environment (rather than in one I run jupyter notebook from). Nonetheless, it works!Resigned
We shall hold a festival in your name! Win 10 64-bit. Hours wasted... but thanks to this, issue solved. conda install pywin32 in my activated env didn't affect system32 and it avoided the need to run the postinstall script which failed because wintypes DLL was not found. It shouldn't be possible to get into this ridiculous state (I don't know how it happened) and it should not take this much work to get out. But thank you thank you thank you.Cordie
C
64

For my case, install and reinstall pywin32 doesn't help. After copied the two files from [installation directory of Anaconda]\Lib\site-packages\pywin32_system32 to C:\Windows\System32, it works.

My environment is python 3.8 in miniconda. The two files are pythoncom38.dll and pywintypes38.dll.

Culliton answered 10/3, 2020 at 3:5 Comment(9)
where is this Lib\site-packages\pywin32_system32 path?Whisenant
It worked for my issue. I use Pyhon3.8 either. I want to know why it happens?Roily
Same issue under Python 3.8. Solution works, but I had to take the files under my virtual environment Lib folderHowdy
This one actually helped me. I guess the problem is with Python 3.8 version.Indoors
This helped me for 3.7 also.Camden
This information helped, but putting 3rd party stuff in C:\Windows\System32 is a recipe for future trouble. Think for instance what will happen if pywin32 updates the DLL and you don't copy them again to C:\Windows\System32 after a pip update. You will get an inconsistent system. In addition, all programs of the computer will "see" these DLLs. You should rather set the PATH as/where required.Nyasaland
Worked perfectly for jupyter notebook as well. Thanks.Vinasse
At an admin command prompt, go to python's Scripts dir and run python -B pywin32_postinstall.py -install BUT if you have multiple venv's, they better have the same version of pywin32 or the Import Error will come back when you switch (pip list to check). See this answer.Matriculate
None of the suggested solutions solved this issue for me, but yours solved it for me. Thanks heaps.Towering
B
48

For me, it worked by downgrading my pywin32 from version 227 to version 224. Just type the following command on any shell in administrator mode:

pip install --upgrade pywin32==224
Beadledom answered 7/6, 2020 at 18:28 Comment(12)
I get this error under Python3.8: Could not find a version that satisfies the requirement pywin32==224 (from versions: 225, 226, 227, 228)Howdy
For python 3.8, if you cannt find pywin32==224, try pywin32==225. It worked for me.Intertwine
@Howdy You must activate the base environment conda activate baseDisruption
You must not activate the base env, only the env that you want to use. Downgrading from 228 to 225 worked for me. pip install --upgrade pywin32==225 workedBroody
pip install pywin32==225 also works for Python 3.9Taeniafuge
Thanks, pip install pywin32==225 worked for me on Windows, Python 3.8Janiecejanifer
As of November 2021, pip install --upgrade pywin32==300 works, pwin32 versions 301, 302 fail! [SO community members should get paid for their QA services :)]Confine
In general for python 3.8, you can use: pip install pywin32Apodaca
pip install pywin32==228 works perfectly for meCholla
I had to pip install pywin32==225 (python 3.9) AND copy the 2 DLLs from my Python install directory to C:\Windows\System32. DLLs were version 37, and just copying them was not enough. First step upgraded the DLLs to 39, but was not enough, doing both solved this issue.Selfless
So, this works, but will downgrading pywin32 be necessary every time I upgrade Python? My script used to work before the upgrade.Selfless
works with python 3.10 virtual env just change to thatIquique
G
39

Run Scripts\pywin32_postinstall.py -install in an Admin command prompt

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

edit: User @JoyfulPanda gave a warning:

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)

Gastrotomy answered 9/4, 2020 at 20:16 Comment(4)
To run pywin32_postinstall.py, you need to python pywin32_postinstall.py -install, else you'll get an importerror about winregRejoice
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).Defluxion
pip install --upgrade pywin32==225 worked for me..ThxDenver
@Denver solution worked for me too as of 2021-06-04Ashjian
N
14

This happens when Lib\site-packages\pywin32_system32 is not in the list of directories to search for DLL (PATH environment variable).

pywin32 (or one of its dependencies) adds this path at runtime to the PATH variable. If this is failing, or another component is overriding the PATH after it's been set by pywin32, you will get the given error (ImportError: DLL load failed while importing win32api).

You can try to extend the PATH variable in the shell before starting Python.

On Windows:

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

If that doesn't work, then the PATH maybe overridden within the Python program at runtime. Add the following line to your program just before pywin32 is used to verify its value:

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

As a last resort, you can extend the PATH variable before pywin32 is loaded:

Windows:

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

Unix like:

os.environ["PATH"] = r"/.../pywin32_system32:" + os.environ["PATH"]
Nyasaland answered 26/7, 2020 at 16:40 Comment(4)
I have added absolute path of 'pywin32_system32' to the os.environ['PATH'] and still can't import win32api. Only copying the two dlls to the system32 could work.Parvis
Maybe because of this change in 3.8: DLL dependencies for extension modules and DLLs loaded with ctypes on Windows are now resolved more securely. Only the system paths, the directory containing the DLL or PYD file, and directories added with add_dll_directory() are searched for load-time dependencies. Specifically, PATH and the current working directory are no longer used, and modifications to these will no longer have any effect on normal DLL resolution.Nyasaland
Thanks for the background. In addition, I had to downgrade to version 224.Intratelluric
C:\ProgramData\Anaconda3>py Scripts\pywin32_postinstall.py -install ...Pythonwin has been registered in context menu Creating directory C:\ProgramData\Anaconda3\Lib\site-packages\win32com\gen_py Can't install shortcuts - 'C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Python 3.8' is not a folder The pywin32 extensions were successfully installed.Baeda
A
13

The answer is in jupyter notebook github. https://github.com/jupyter/notebook/issues/4980

conda install pywin32 worked for me. I am using conda distribution and my virtual env is using Python 3.8

Attest answered 28/12, 2020 at 15:49 Comment(1)
Worked for me in python 3.9.5Rambouillet
B
12

According to pywin32 github you must run

pip install pywin32

and after that, you must run

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

taken from here. worked for me!

Bearer answered 17/8, 2020 at 15:26 Comment(3)
I think this is the most orthodox solution amongst all available solutions. It works because extra pywin32 extensions need to be installed.Anticatalyst
link to the answer on the issueAara
This solution worked for me because pywin32 needed extra extensions to be installed.Crossways
C
8

For python 3.8.3, pywin32==225 worked for me, the existing pywin32==228 was uninstalled.

So try this

pip install pywin32==225

Hope it solves your problem

Creed answered 27/3, 2021 at 18:24 Comment(1)
for me a similar approach worked. I downgraded from 227 to 226. also a newer version like 301 did not workout for me.Pogey
I
5

As of February 2022, downgrading tot version 303 of pywin32 solves the issue.

Check your pywin32 version:

pip show pywin32

Downgrade to version 300:

pip install pywin32==300 --upgrade

Restart Jupyter

Iquitos answered 13/2, 2022 at 9:45 Comment(0)
A
5

What helped me was

  1. installing relevant binary from github.com/mhammond/pywin32
  2. executing the following commands in the x64 command line:

cd C:\ProgramData\Anaconda3\Scripts

python pywin32_postinstall.py -install

Almaalmaata answered 7/6, 2022 at 8:10 Comment(0)
U
4

pypiwin32 is an outdated distribution. Uninstall it and install pywin32:

pip uninstall pypiwin32
pip install pywin32
Usanis answered 29/10, 2019 at 18:53 Comment(4)
thank you but unluckily nothing changes.. here's what i did Successfully uninstalled pypiwin32-223 C:\Users\gfroz\AppData\Local\Programs\Python\Python38-32\Scripts>pip install pywin32 Requirement already satisfied: pywin32 in c:\users\gfroz\appdata\local\programs\python\python38-32\lib\site-packages (225) and then >>> 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. Druse
Try to reinstall it; after all your experiments with different packages the DLLs could be broken: pip install --ignore-installed pywin32Usanis
thank you so much! actually it didn't work first when i just installed pywin32 but then i wrote in the scripts folder pywin32_postinstall.py -install, then i tried import win32api and no error appear!Druse
All pywin32_postinstall.py doing is copying pywintypes[pyton version].dll and pythoncom[pyver].dll from \Lib\site-packages\pywin32_system32\ into main dir. Actually better to just manually copy to \Library\bin. Then it all works.Clevey
S
4

You should try some (or all) of my methods:

  1. Run terminal and use this command: conda install pywin32.

  2. Copying the two files from [installation directory of Anaconda]\Lib\site-packages\pywin32_system32 (there are only 2 files in this folder) and paste to C:\Windows\System32.

    In my case, the two files are pythoncom38.dll and pywintypes38.dll (it means my Python version is 3.8).

  3. Downgrading the version of pywin32 to 225 or lower by this command: pip install pywin32==225.

Styrax answered 4/10, 2021 at 4:39 Comment(1)
I had to first downgrade pywin32 (created the correct version of the DLL - in my case 39 - THEN copy it to C:\Windows\System32.Selfless
S
3

Windows 10, Python 3.8, PyWin32 v.302 using Anaconda

Here is what worked for me

Open an elevated command prompt activate environment

  • Windows Key
  • Type cmd
  • Right click Command Prompt and click Run as Administrator
  • conda activate [ENVIRONMENT]

Navigate to the environment you installed PyWin32 on, works if pip install or conda install is used

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

Run the post install script that was added when installing PyWin32

  • python pywin32_postinstall.py -install
Slay answered 18/11, 2021 at 18:8 Comment(0)
B
3

Yes it works!

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

Parsed arguments are: Namespace(destination='C:\ProgramData\Anaconda3\Lib\site-packages', install=True, quiet=False, remove=False, silent=False, wait=None) Copied pythoncom38.dll to C:\WINDOWS\system32\pythoncom38.dll Copied pywintypes38.dll to C:\WINDOWS\system32\pywintypes38.dll Registered: Python.Interpreter Registered: Python.Dictionary Registered: Python -> Software\Python\PythonCore\3.8\Help[None]=None -> Software\Python\PythonCore\3.8\Help\Pythonwin Reference[None]='C:\ProgramData\Anaconda3\Lib\site-packages\PyWin32.chm' Registered help file Pythonwin has been registered in context menu Creating directory C:\ProgramData\Anaconda3\Lib\site-packages\win32com\gen_py Can't install shortcuts - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.8' is not a folder The pywin32 extensions were successfully installed.

Baeda answered 5/4, 2022 at 0:59 Comment(0)
T
2

version 228 works best for me in Windows 10

pip uninstall pywin32
pip install pywin32==228
Tong answered 26/7, 2021 at 13:29 Comment(0)
A
1

Jupyter notebook github has the issue mentioned in the question. There are multiple solution proposed.

What worked for me was this answer with additional first step:

  1. pip uninstall pywin32
  2. pip install pywin32
  3. python [environment path]/Scripts/pywin32_postinstall.py -install
Astronavigation answered 26/2, 2021 at 17:21 Comment(0)
E
1

Maybe a bit late but it could help:

What happens is that you have two versions of pywin32 installed (One in the local enviroment and the other one in the main python installation)

To solve that uninstall both versions with:

conda uninstall pywin32
pip uninstall pywin32

And inside your virtual conda enviroment also execute:

conda uninstall pywin32
or 
pip uninstall pywin32

finally in your virtual enviroment / conda enviroment install with pip install pywin32 or conda.

The answers telling that it works with x version is because the version they install are compatible with the pywin32 dlls they have in system32.

Adding a support link: "DLL load failed: The specified procedure could not be found" when importing win32api or win32com

Esra answered 4/1, 2023 at 13:5 Comment(0)
F
1

pip install pywin32==304 --upgrade

Worked for me on Python 3.10.x

Footlambert answered 6/9, 2023 at 10:9 Comment(0)
T
0

In the referecne to this comment question

where is this Lib\site-packages\pywin32_system32 path?

Go to C directory, Users , your username , anaconda3 ,Lib, site-packages,pywin32_system32. you can find easily.

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

Tweedy answered 23/5, 2020 at 10:8 Comment(0)
M
0

Currently there are two copies of the pythoncom*.dll files in directories. Pycharm is using the copy in directory C:\Windows\System32:-

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

The files are: - pythoncom38.dll - 559 KB pywintypes38.dll - 138 KB

Mcvey answered 22/8, 2020 at 9:34 Comment(0)
Y
0

I downloaded and installed the latest Microsoft Visual C++ 2015-2019 package from (https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads). You may have to restart your machine after installation.

Then from conda command prompt activate your virtual environment and go to the Scripts folder of the virtual environment(>cd "path of venv"/Scripts)

Once you are in the Scripts folder run the following command "python pywin32_postinstall.py -install"

This will install the required dll's to the appropriate folders in the virtual environment.

And that's how I got it to work!

Yusuk answered 18/11, 2020 at 7:29 Comment(0)
P
0

I have had this issue with Jupyter in Anaconda. After following all listed advices, without clear understanding what I am doing, nothing worked for me except one thing. I have updated indexes of Anaconda environments and I've got my kernels back. The screenshot

Preoccupation answered 25/6, 2021 at 11:45 Comment(0)
C
0

That is Simple. After Many Tries, I Discovered a Solution. Just Type the Following Commands in Windows 10. I am Using Pycharm, Python Version 3.9

Note:- This Works for All Python Versions !!

pip uninstall pywin32

pip install pywin32

That is Simple.

if That Does Not Work, Then Try:-

pip uninstall win32api
pip install win32api

After Trying These Commands, Try the first 2 commands again.

If It is Still Not Coming, Then Comment This Question What the problem is !!

Continuation answered 10/7, 2021 at 15:14 Comment(1)
pip uninstall pywin32 and pip install pywin32 worked for me. Thanks.Saltcellar
V
0

This problem for me occured when recreating venv from requirements.txt. This venv was initially created on Ubuntu Linux and then recreated on Win 10.

I had to clear the environment and install everyrhing again manually. Did the work for me.

Varices answered 12/7, 2021 at 23:5 Comment(0)
B
0

Solved

I tried uninstalling and reinstalling pywin32 multiple ways, but the problem persisted. The following way solved the problem:

pip install --upgrade jupyter_client    
pip install --upgrade pywin32==224 --force-reinstall
Bonnybonnyclabber answered 13/8, 2021 at 4:56 Comment(0)
D
0

hi this question i'm solve as below: 1.check directory C:\Windows\System32, is exist these file? pythoncom37.dll pywintypes37.dll or pythoncom36.dll pywintypes36.dll the number is python version .

  1. if the file is exist delete it.

and then this issue will be solve.

Duple answered 11/2, 2022 at 8:35 Comment(0)
P
0

You should go into the folder {python folder path}/Lib/site-packages/pywin32_system32 and copy pythoncomXX.dll and pywintypesXX.dll to the folder C:/Windows/System32.

If you are using a virtual environment, then {python folder path} is the python folder used by the virtual environment, otherwise it is the folder where the global python is located. For example, I use conda to create a virtual environment called Frameless-Window, and install the package pywin32 in this virtual environment, then the {python folder path} on my computer should be D:/Anaconda/envs/Frameless-Window.

You should be very careful when copying the dll to the System32 folder. if there are dlls with the same name in the folder and pywin32 in your other virtual environment may use these two dlls, replacing the original dlls may cause this virtual environment had the same ImportError problem. After testing, I found that the dlls of pywin32 of version 227, 228 and 300 can be replaced with each other, and the dlls of pywin32 of versions 301, 302, 303 and 304 can also be replaced with each other, but if the dll of version 300 is replaced with the dll of version 301, it will raise ImportError.

Picker answered 3/6, 2022 at 10:46 Comment(0)
A
0

If you are launching a virtual env from another virutal env. Makes sure to install pywin32 in both envs. Lost way too many time with this....

Arneson answered 15/6, 2022 at 14:29 Comment(0)
S
0

This worked for me conda install -c anaconda pywin32

Starnes answered 7/11, 2022 at 18:49 Comment(0)
B
0

Its about venv or virtualenv version problem about pywin32 check version of both of version of pywin32 (pip install pywin32)

than run this command on active venv

pip install --upgrade pywin32==305
Bought answered 21/12, 2022 at 7:45 Comment(0)
B
0

I had the same issue after reinstalling anaconda 3.9 instead of 3.7 and placing inside the former env folder.

I launched the Anaconda Prompt application then typed in

cd C:\Users\%USERNAME%\anaconda3\Scripts
activate.bat

I suspect it updated the pythoncomXX.dll and pywintypesXX.dll used by anaconda.

Breadstuff answered 17/1, 2023 at 14:27 Comment(0)
C
0

I managed to copy files from "yourPython"/Lib/site-packages/pywin32_system32, pywintypes310.dll and pythoncom310.dll to the app folder with the exe /win32 and in the app folder with the exe, I also copied the pywintypes311.dll file generated by pyinstaller in the app folder with the exe /win32 to System32

Combustible answered 24/4, 2023 at 2:31 Comment(0)
Z
-1

I am a miniconda user. I got this error first after installed some python environment then deleted it. So I reinstalled the jupyter notebook and it replaced some missing files and issue is fixed.

conda install jupyter notebook
Zanze answered 18/9, 2021 at 6:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.