141
votes

I am using Python 2.7 and I want to use pywin32-214 on Windows 7. I installed pywin32-214 by using the msi installer. But when I import win32api in my Python script, it throws the error:

no module named win32api. 

What should I do? Can I use pywin32 api for Windows 7?

9
Do you have multiple versions of Python installed? If so are you sure you are trying to import from the same one that you installed it to? - Claudiu
It's possible that the path msi installer installed to is different from the path you're trying to import from. - aidnani8
Claudiu: no, i have only installed python 2.7 on my pc - akshay
user3193087: Actually, msi installer installed files in to my /python27/... subdirectory. you can import any files which are installed in the subdirectories. Am I right?? - akshay
I'm getting this when trying to run a Jupyter notebook in PyCharm. It work fine before, not sure what happened... - CGFoX

9 Answers

261
votes

This is resolve my case as found on Where to find the win32api module for Python?

pip install pypiwin32
44
votes

I had an identical problem, which I solved by restarting my Python editor and shell. I had installed pywin32 but the new modules were not picked up until the restarts.

If you've already done that, do a search in your Python installation for win32api and you should find win32api.pyd under ${PYTHON_HOME}\Lib\site-packages\win32.

41
votes

According to pywin32 github you must run

    pip install pywin32

and after that, you must run

    python Scripts/pywin32_postinstall.py -install

I know I'm reviving an old thread, but I just had this problem and this was the only way to solve it.

16
votes

I didn't find the package of the most voted answer in my Python 3 dist.

I had the same problem and solved it installing the module pywin32:

In a normal python:

pip install pywin32

In anaconda:

conda install pywin32

My python installation (Intel® Distribution for Python) had some kind of dependency problem and was giving this error. After installing this module it stopped appearing.

1
votes

After installing pywin32

Steps to correctly install your module (pywin32)

  1. First search where is your python pip is present

    1a. For Example in my case location of pip - C:\Users\username\AppData\Local\Programs\Python\Python36-32\Scripts

  2. Then open your command prompt and change directory to your pip folder location.

    cd C:\Users\username\AppData\Local\Programs\Python\Python36-32\Scripts
    
    C:\Users\username\AppData\Local\Programs\Python\Python36-32\Scripts>pip install 
    pypiwin32
    

Restart your IDE

All done now you can use the module .

1
votes

I had both pywin32 and pipywin32 installed like suggested in previous answer, but I still did not have a folder ${PYTHON_HOME}\Lib\site-packages\win32. This always lead to errors when trying import win32api.

The simple solution was to uninstall both packages and reinstall pywin32:

pip uninstall pipywin32
pip uninstall pywin32
pip install pywin32

Then restart Python (and Jupyter). Now, the win32 folder is there and the import works fine. Problem solved.

1
votes

The following should work:

pip install pywin32

But it didn't for me. I fixed this by downloading and installing the exe from here:

https://github.com/mhammond/pywin32/releases

0
votes

In my case, the only thing that worked was to download the appropriate wheel from: https://pypi.org/project/pywin32/#files, and install with --force-reinstall.

pip install pywin32-300-cp37-cp37m-win_amd64.whl --force-reinstall

0
votes

This line: import win32com
got me the error no module named win32api.

Using this command in elevated terminal: pip install pywin32-ctypes and pip install pywin32 and based on the error displayed, replacing:
import win32apifrom win32ctypes.pywin32 import win32api
import pywintypesfrom win32.lib import pywintypes
import _win32sysloaderfrom win32 import _win32sysloader
in your source file, or even the files of the packages that report the error (know what you are doing if you choose this approach) may solve this error. But better would be to just add the corresponding directories into the python path variable, for better integration with the python loading system, more info here: https://realpython.com/python-import/

So I put this content:

python38.zip
.
./lib
./lib/site-packages
./lib/site-packages/win32
./lib/site-packages/win32/lib
./lib/site-packages/win32ctypes/pywin32
./lib/site-packages/win32ctypes


# Uncomment to run site.main() automatically
#import site

(order DOES matter) into this file: <python_root_installation_directory>/python38._pth That way, correct libraries load when standard imports are used. If there is a cache import somewhere in the library, it will work, and the imports inside the libraries work as well.

This works for me and my installation, so your environment may be set up differently and this guide may not be fully compatible, but it is a good step in solving the issue, maybe modification or extension of my steps above may lead to the solution in another distribution.