Как установить библиотеку Win32com Python


18

Я пытаюсь установить модуль win32com. Я знаю, что должен загрузить расширение Python для Windows , но оно не работает.

После того, как я установил Python для Windows и попробовал import win32com.client, я получаю следующее сообщение об ошибке:

>>> import win32com.client

    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        import win32com.client
      File "C:\Python27\lib\site-packages\win32com\__init__.py", line 5, in <module>
        import win32api, sys, os

ImportError: No module named win32api

Попытка google для получения справки о том, как установить win32api для Python, также не помогает; Я только что снова обратился к расширениям Python для Windows.


1
Вы установили правильный двоичный файл расширений Python для Windows для своей версии Python? Например, если вы устанавливаете 64-битный Python, а затем устанавливаете 32-битные расширения, модули чистого Python (например win32con) будут импортироваться, а модули C-расширения (например win32api) - нет; если вы устанавливаете Python 2.6, а затем устанавливаете расширения для 2.7, они могут импортироваться, но могут потерпеть крах позже; и т.д.

10
С какой стати это было перенесено из переполнения стека ?!
Жан-Франсуа Корбетт

Ответы:


10
  1. Запустите командную строку с правами администратора.
  2. python -m pip install pywin32
  3. C:\Program Files\Stackless36\Scripts>python pywin32_postinstall.py -install
  4. python C:\code\Python\speech\speak.py

Где speak.pyсостоит из этого текста:

import win32com.client

speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("It works, bitches.")

Отлично работает на Python 3.6.4 Stackless 3.1b3 060516 (v3.6.4-slp: 9557b2e530, 21 декабря 2017, 15:23:10) [MSC v.1900 64 бит (AMD64)] на win32. Ванильный CPython висит здесь:

C:\Users\C\AppData\Local\Programs\Python\Python36-32>python.exe
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import win32com.client
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'win32com'
>>> exit()

C:\Users\C\AppData\Local\Programs\Python\Python36-32>python.exe -m pip install pywin32
Collecting pywin32
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/d4/2d/b927e61c4a2b0aaaab72c8cb97cf748c319c399d804293164b0c43380d5f/pywin32-223-cp36-cp36m-win32.whl (8.3MB)
    100% |████████████████████████████████| 8.3MB 50kB/s
Installing collected packages: pywin32
Successfully installed pywin32-223
You are using pip version 9.0.3, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

4

Проверьте sys.path, чтобы убедиться, что каталог, в котором установлен модуль, находится там, в противном случае вы должны добавить его (окна Google PYTHONPATH для некоторой помощи в этом.)


1
Спасибо за совет. Проблема оказалась другой: по какой-то причине в реестре были две разные установки Python, хотя обе они указывали на одни и те же файлы. Переустановка его на обоих решила проблему.

Я попытался настроить PYTHONPATH в переменной среды и до сих пор не вижу, как это работает. получить ту же ошибку.
Соман Дубей

Для тех из вас, кто сейчас установил пакет, связанный с OP, вам необходимо перезапустить консоль Python (например, IDLE) для внесения необходимых изменений в PYTHONPATH, чтобы ваша importработа работала.
SeldomNeedy

2

У меня была такая же проблема только вчера. Я установил pypiwin32с помощью pip.

Пытаться

>>pip install -U pypiwin32

в командной строке

Убедитесь, что ваш пакет Python находится в системном PATH.

Обратите внимание, что существует несколько разных способов установки модулей Python, и, как вы обнаружили, не все из них работают. pip installу -Uменя работал с pypiwin32модулем (который содержит win32com).


1
-UПереключатель означает --upgradeи pypi.org/project/pypiwin32 это лучше упаковано (формат .whl) pypi.org/project/pywin32 одни и те же разработчики. Я читал, что python -m pipэто предпочтительнее просто pipпо причинам пути.
Сис Тиммерман

Это сработало для меня. Обратите внимание, что если вы получаете сообщение об ошибке TypeError: 'module' object is not callable, попробуйте:python -m pip install -U pypiwin32
datalifenyc

-2

найдите файл на вашем компьютере, выполнив поиск на всем вашем компьютере «win32api», как только вы найдете его, поместите его здесь C: \ Python26 \ Lib \ win32com «это предполагает, что вы уже установили библиотеку win32com, и вы найдете файл, который я думаю, в« C » : \ Python26 \ Lib \ site-packages \ win32 "В конце концов, файл должен находиться в этих двух местах на вашем компьютере, чтобы ваш модуль работал, и все в конечном итоге".

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.