Проблема с установкой pywin32 - PullRequest
7 голосов
/ 12 июля 2011

Я пытаюсь установить pywin32 для Python 2.6.У меня установлен python, но он не на обычном диске c: а на диске d :.Установщик pywin32 не находит его, и я не могу указать собственный путь к нему.

Я проверил, папка python - это путь.Есть ли решение этой проблемы?

Ответы [ 10 ]

15 голосов
/ 30 октября 2015

Обновление 2017-06-14 Похоже, с Python 3.6 снова возникла та же проблема. Но я нашел хорошее предложение: есть версия pywin32 для пипсов: просто используйте

pip install pypiwin32

Не была установлена ​​последняя версия (на данный момент у sourceforge 221, установлено 220), но она работала без изменений в реестре или каких-либо других взломов.

Обновление 2017-02-01: Я только что попробовал установить сборку 220, используя 32-разрядную версию Python 3.5.2 в Windows 10 (64-разрядную версию), и все работало хорошо без необходимости изменения реестра. Поэтому лучшим советом может быть использование самой последней сборки вместо сборки 219.

Старое решение (сборка 219):

Я столкнулся с той же проблемой сегодня, когда пытался установить pywin32 вместе с Python 3.5 win32 под Windows 8.1.

Все установщики (сборка 219) для py 3.5 завершились неудачно, и изменение реестра, как описано в постах Иисуса Флореса и Лорен Альсины, не решило проблему.

Что меня устроило, так это добавив записи реестра не в HKEY_LOCAL_MACHINE, а в HKEY_CURRENT_USER и , изменив версию Python в PythonCore с 3.5-32 на 3.5.

Интересно, что с ключом 3.5-32 работает 64-битный установщик, но, конечно, вы столкнетесь с проблемами, поскольку установленные 64-битные библиотеки не совместимы с 32-битным питоном. Что-то очень сломано в этом установщике.

Итак, мой рабочий файл .reg для Python 3.5 w32 выглядит так:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Python]

[HKEY_CURRENT_USER\SOFTWARE\Python\PyLauncher]
"InstallDir"="C:\\Windows\\"
"AssociateFiles"=dword:00000001
@="C:\\Windows\\py.exe"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore]

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5]

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\Help]

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\Help\Main Python Documentation]
@="C:\\Program Files (x86)\\Python 3.5\\Doc\\python350.chm"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\Idle]
@="C:\\Program Files (x86)\\Python 3.5\\Lib\\idlelib\\idle.pyw"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\IdleShortcuts]
@=dword:00000001

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\InstalledFeatures]
"dev"="3.5.150.0"
"Shortcuts"="3.5.150.0"
"exe"="3.5.150.0"
"lib"="3.5.150.0"
"test"="3.5.150.0"
"doc_shortcut"="3.5.150.0"
"doc"="3.5.150.0"
"tools"="3.5.150.0"
"tcltk"="3.5.150.0"
"pip"="3.5.150.0"
"path"="3.5.150.0"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\InstallPath]
@="C:\\Program Files (x86)\\Python 3.5\\"
"ExecutablePath"="C:\\Program Files (x86)\\Python 3.5\\python.exe"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\InstallPath\InstallGroup]
@="Python 3.5"

[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.5\PythonPath]
@="C:\\Program Files (x86)\\Python 3.5\\Lib\\;C:\\Program Files (x86)\\Python 3.5\\DLLs\\"
14 голосов
/ 12 июля 2011

Из ПОВТОРА pywin32

Если процесс установки сообщит вам, что Python не найден в реестр, это почти наверняка означает, что вы скачали не ту версию - либо для неправильной версии Python, либо для неправильной "горечи".

Вы уверены, что получили правильную версию для своего питона и архитектуры вашего процессора? Если вы это сделали, и это не сработало, вы можете попробовать собрать из исходного кода, я думаю, что может быть флаг командной строки, который позволит вам указать место установки Python.

8 голосов
/ 11 апреля 2014

У меня была такая же проблема:

В 64-битной Windows 32-битные приложения регистрируются в:

[1] HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Python

Я считаю, что установщик ожидает найти Python в:

[2] HKEY_LOCAL_MACHINE \ SOFTWARE \ Python

С правами regedit и локальными администраторами вы можете экспортировать файл .reg из [1],удалите все найденные Wow6432Node, затем импортируйте его как [2]

3 голосов
/ 24 декабря 2016

У меня была та же проблема с последним Python36-32, работающим на Windows 10 64 бит. Все решения выше не работали для меня, когда он был установлен для режим всех пользователей .

Ответ Обу выше почти сработал, заменив 3,5 на 3,6, тогда pywin32 может обнаружить путь к реестру, но все равно не удалось с кодом ошибки can't create pywin32-wininst.log. Try to run as administrator. Он просто останавливает установку и завершает работу, даже если он уже запущен с правами администратора.

После многих испытаний это решено, как показано ниже:

  1. Взять Подход Обу выше , заменив версию 3.5 на 3.6.

  2. Зарегистрируйте его.

  3. Переименуйте папку установки по умолчанию в python36-32, примерно так: C:\Program Files (x86)\Python36-32 в C:\Program Files (x86)\Python36
  4. Запустите установщик pywin32 от имени администратора.

* Прошу прощения, я не могу ответить на комментарий здесь из-за ограничения репутации, поэтому я создаю этот ответ, чтобы помочь другим, у которых такие же проблемы, как и у меня.

2 голосов
/ 29 декабря 2016

У меня была такая же проблема на Windows 10 64 бит с Python 3.6.Он установлен для всех пользователей (я полагаю, он использует другой куст реестра, если он установлен только для текущего пользователя).

Проблема заключалась в том, что pywin32-220.win32-py3.6.exe ищет в реестре HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.6, в то время как установка python 3.6 создана HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.6-32.

Обратите внимание на разные окончания!Экспорт реестра 3.6-32 в файл .reg, изменение путей к 3.6 и повторный импорт реестра файлов снова решили проблему для меня.

0 голосов
/ 28 марта 2019

Я столкнулся с этой конкретной проблемой, но мне показалось, что моя ситуация немного отличается, и, кроме того, я не хотел использовать взлом реестра. Поэтому я начал публиковать новый вопрос. Вот что я собирался написать:


На моем компьютере с Windows 7 установлены как 64-битные, так и 32-битные версии Python 3.7. 64-разрядная версия установлена ​​в C: \ Python37, а 32-разрядная версия установлена ​​в C: \ Python37-32. У меня установлен пакет pywin32 в 64-битной версии, но не в 32-битной версии. Когда я запускаю командное окно, переключаюсь в C: \ Python3y-32 и запускаю "pip install pywin32", мне говорят, что оно уже установлено в C: \ Python37. Да, я знаю это. Я хочу, чтобы он был установлен где-то еще. Я попытался загрузить файл колеса и установить его, с тем же результатом. Я попытался переименовать мою папку C: \ Python37 в «C: \ Python37 64 бит» и переименовать C: \ Python37-32 в C: \ Python37, но пип дал мне фатальную ошибку:

Неустранимая ошибка в панели запуска: невозможно создать процесс, используя «C: \ python37-32 \ python.exe"
"C: \ Python37 \ Scripts \ pip.exe" установить "c: \ users \\ downloads \" pywin32-223-cp37-cp37m-win32.whl " '

(добавлены разрывы строк для удобства чтения)


Но потом я снова посмотрел на это сообщение об ошибке и понял, что строка в кавычках - это команда. Я скопировал эту строку, переключился в папку C: \ Python37-32 в моем командном окне, вставил строку, удалил ссылку на C: \ Python37 и запустил ее. Нет проблем.

0 голосов
/ 19 марта 2018

Это должно работать для пользователей Python 3.5:

py -3.5 -m pip install pywin32
0 голосов
/ 29 ноября 2017

pywin32 build 219 имеет проблему в том, что он ищет 32-битное место установки python 3.5 в неправильном разделе реестра.Эта проблема исправлена ​​в более поздних сборках pywin32 - 220 и 221 - те, которые я пробовал - и они правильно находят место установки python в реестре.Вы можете увидеть билет pywin32 здесь .

Если вам нужна сборка 219, то вы можете временно переименовать запись в реестре.

Я устанавливаю python для всех пользователей на моем ПК, поэтому записи реестра на моем компьютере находятся в HKEY_LOCAL_MACHINE.Если вы устанавливаете python для каждого пользователя, записи реестра будут в HKEY_CURRENT_USER.Кроме того, мой COM-объект является 32-разрядным, поэтому мы используем 32-разрядный Python.

32-битные записи реестра Python будут расположены по адресу: \SOFTWARE\Wow6432Node\Python\PythonCore.

64-битные записи реестра Python будут расположены по адресу: \SOFTWARE\Python\PythonCore.

В моем случае у меня было две записи, которые нужно было временно переименовать:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32

Место установки Python находится в ключе InstallPath, который на моем компьютере:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32\InstallPath

Моя папка \PythonCore\3.5 имеет только ключ \Help\Pythonwin Reference, который дублируется в папке \PythonCore\3.5-32, поэтому я думаю, что этот ключ оставлен после предыдущей установки и более не актуален.Однако я не решил удалить его и временно переименовал оба из них следующим образом:

С:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

Кому:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-temp

С:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32

Кому:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

Когда установка pywin32 build 219 была завершена, я вернул ключи к исходным именам.

0 голосов
/ 04 августа 2017

Я был в подобной ситуации, пытаясь установить pywin32 , но с Winpython переносимой установкой.После некоторых поисков я нашел ссылку на этот огромный репозиторий пакетов в .whl бинах Кристофа Гольке .

Загрузите соответствующий файл колеса для вашей версии Python, в моем случае 3.6.1 на 32-битной, и установите его через pip :

pip install pywin32‑221‑cp36‑cp36m‑win32.whl
0 голосов
/ 06 января 2015

1) Создать текстовый файл с таким содержанием:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Help]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Help\Main Python Documentation] @="C:\\Python34\\Doc\\python342.chm"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\InstallPath] @="C:\\Python34\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\InstallPath\InstallGroup] @="Python 3.4"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Modules]

[HKEY_LOCAL_MACHINE\SOFTWARE\PythonCore\3.4\PythonPath] @="C:\\Python34\\Lib;C:\\Python34\\DLLs"

2) Замените деталь C: \\ Python34 на путь, по которому вы установили python.

3) Сохранить файл как * .reg

4) Запустите файл для объединения с реестром.

Только что протестировал его для установки pywin32 и все работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...