Ошибка импорта win32api в Python 2.6
Описание проблемы
Я столкнулся с ошибками при запуске Python 2.6 на 64-битной версии Windows. Ниже приведены сообщения об ошибках, которые я получаю:
Ошибка при импорте:
import win32api
В результате возникает следующая ошибка:
pywintypes26.dll
Либо другая ошибка:
pythoncom26.dll missing ImportError: DLL load failed: The specified module could not be found.
Я установил Python 2.6 с помощью MSI, и все необходимые DLL-файлы находятся по следующему пути:
C:\Python26\Lib\site-packages\pywin32_system32
Пожалуйста, помогите мне разобраться с этой проблемой.
5 ответ(ов)
Проблема была решена после того, как я скопировал файлы pywintypes26.dll
и pythoncom26.dll
из C:\Python26\Lib\site-packages\pywin32_system32
в C:\Python26\Lib\site-packages\win32
. Если у вас возникают аналогичные проблемы с библиотеками pywin32, рекомендую попробовать этот шаг. Убедитесь, что вы используете правильные версии файлов, соответствующие вашей установке Python.
Проблема с импортом win32api
может быть связана с тем, что скрипт post-install для pywin32 не сработал корректно. Этот скрипт отвечает за копирование таких файлов, как pythoncom26.dll
, pythoncomloader26.dll
и pywintypes26.dll
, которые необходимы для работы библиотеки.
Вы можете решить эту проблему, запустив скрипт установки вручную. Для этого выполните следующую команду в командной строке:
python scripts\pywin32_postinstall.py -install
После этого ваша установка должна заработать. Если проблема не исчезнет, проверьте, правильно ли установлен pywin32 и все ли зависимости на месте.
У меня была похожая проблема при установке модуля в 64-битной версии Python 3.4.2. Я скачал исполняемый файл установки pywin32‑219.win‑amd64‑py3.4.exe с сайта http://www.lfd.uci.edu/~gohlke/pythonlibs/.
На сайте четко указано:
"Пользователи Python 3.4 должны вручную запустить python.exe Scripts\pywin32_postinstall.py -install
из повышенной командной строки."
Я не сделал этого в первый раз: установил модуль из обычного окна командной строки и получил следующий вывод:
c:\python34>python.exe Scripts\pywin32_postinstall.py -install
Скопирован pythoncom34.dll в C:\Python34\pythoncom34.dll
Скопирован pywintypes34.dll в C:\Python34\pywintypes34.dll
У вас нет прав для установки объектов COM.
Пример объектов COM не был зарегистрирован.
и т.д.
Завершено сообщением "Расширения pywin32 были успешно установлены"...
Я только прочитал последнее предложение и, начав запускать код, столкнулся с ошибками загрузки этих DLL.
После этого я провел небольшое исследование, открыл повышенную командную строку (как: см. "http://www.sevenforums.com/tutorials/783-elevated-command-prompt.html") и снова выполнил:
c:\python34>python.exe Scripts\pywin32_postinstall.py -install
Скопирован pythoncom34.dll в C:\Windows\system32\pythoncom34.dll
Скопирован pywintypes34.dll в C:\Windows\system32\pywintypes34.dll
Зарегистрировано: Python.Interpreter
Зарегистрировано: Python.Dictionary
Зарегистрировано: Python
-> Software\Python\PythonCore\3.4\Help[None]=None
-> Software\Python\PythonCore\3.4\Help\Pythonwin Reference[None]='C:\\Python34\\Lib\\site-packages\\PyWin32.chm'
Pythonwin зарегистрирован в контекстном меню
Создана ярлык для Pythonwin
Создана ярлык для документации
Расширения pywin32 были успешно установлены.
Теперь мой код работает без проблем (по крайней мере в этом отношении... вздох, еще столько всего нужно сделать).
Для решения проблемы запустите установщик с правами администратора:
- Щелкните правой кнопкой мыши на файле
pywin32-installer.exe
. - Выберите пункт "Запустить от имени администратора".
Это должно помочь!
Как было предложено выше, скрипт постустановки не выполняется, и эта проблема может возникнуть при установке из wheel (как я столкнулся с ней).
Попробуйте выполнить следующую команду:
python scripts\pywin32_postinstall.py -install
Если вы столкнулись с этой проблемой при установке через wheels, установка из следующего источника может решить указанную проблему:
Как изменить порядок столбцов в DataFrame?
'pip' не распознан как командa внутреннего или внешнего формата
Почему statistics.mean() работает так медленно?
Преобразование строки даты JSON в datetime в Python
Есть ли разница между поднятием экземпляра класса Exception и самого класса Exception?