Это файл сведений для расширений Python для Win32 (pywin32), который обеспечивает доступ ко многим API-интерфейсам Windows из Python.
См. CHANGES.txt, чтобы узнать о недавних заметных изменениях.
Документация — это длинная и печальная история, но теперь есть онлайн-версия файла справки, которая поставляется с установщиками (спасибо @ofek!). Многие из них очень старые, но некоторые из них созданы автоматически и актуальны. Хотелось бы помочь распутать документы!
Не стесняйтесь открывать проблемы для всех ошибок (или предполагаемых ошибок) в pywin32. Также приветствуются запросы на включение всех ошибок или функций.
Однако, пожалуйста, не открывайте вопросы GitHub для общих запросов в службу поддержки , а также для проблем или вопросов, связанных с использованием модулей в этом пакете — они будут закрыты. По таким вопросам отправьте электронное письмо в список рассылки python-win32 — обратите внимание, что перед публикацией вы должны подписаться на этот список.
Двоичные выпуски больше не поддерживаются.
Сборка 306 была последней с установщиками .exe. Вам действительно не следует их использовать, но если они вам действительно нужны, найдите их здесь.
Вам следует установить pywin32 через pip - например,
python -m pip install --upgrade pywin32
Существует сценарий после установки (см. ниже), который не следует запускать внутри виртуальных сред; его следует запускать только в «глобальных» установках.
Для невыпущенных изменений вы можете скачать сборки сделанные действиями github - выберите любой "рабочий процесс" из main
ветки и скачайте его "артефакты")
За пределами виртуальной среды вам может потребоваться установить COM-объекты, службы и т. д. Это можно сделать, выполнив:
python Scripts/pywin32_postinstall.py -install
Из корня вашей установки Python.
Если вы сделаете это с обычными разрешениями, оно будет глобальным для вашего пользователя (несколько файлов будут скопированы в корень вашей установки Python, а некоторые изменения будут внесены в HKCU). Если вы выполните это из процесса с повышенными правами, оно будет глобальным для машины (файлы будут скопированы в System32, HKLM будет изменен и т. д.).
Чтобы работать как служба, вы, вероятно, захотите установить pywin32 глобально из командной строки с повышенными привилегиями — см. выше.
Вам также необходимо убедиться, что Python установлен в месте, где пользователь, запускающий службу, имеет доступ к установке и может загружать pywintypesXX.dll
и pythonXX.dll
. В частности, учетная запись LocalSystem
обычно не имеет доступа к локальной структуре каталогов %USER%
.
Если при обновлении вы столкнулись с какими-либо проблемами, например:
The specified procedure could not be found
Entry-point not found
Обычно это означает одно из двух:
Вы обновили установку, в которой ранее запускался сценарий после установки. Поэтому вам следует запустить его еще раз:
python Scripts/pywin32_postinstall.py -install
Это предпримет несколько небольших попыток очистить старые конфликтующие установки.
В вашей системе установлены другие библиотеки DLL pywin32, но в другом месте, чем новые. Иногда это происходит в средах, в которых предварительно поставляется pywin32 (например, anaconda?).
Возможные решения здесь:
pywintypesXX.dll
и pythoncomXX.dll
(где XX
— версия Python, например «39»). Установите Visual Studio 2019 (позже, возможно, будет работать, но параметры могут быть другими), следуйте инструкциям в разделе «Среда сборки» для устанавливаемой версии.
(бесплатные компиляторы, вероятно, тоже работают, но не проверялись — дайте мне знать о своем опыте!)
setup.py
— это стандартный сценарий сборки distutils, поэтому вам, вероятно, понадобится:
python setup.py install
или
python setup.py --help
Для сборки некоторых модулей требуются неясные SDK — setup.py
должен завершиться успешно, изящно сообщая вам, почему не удалось их собрать — если сборка действительно не удалась с вашей конфигурацией, пожалуйста, откройте проблему.
Следующие шаги выполняются при создании нового релиза — в основном это для формирования контрольного списка, чтобы @mhammond не забыл, что делать :)
Начиная со сборки 307, процесс выпуска основан на артефактах, созданных действиями Github.
Убедитесь, что в файле CHANGES.txt есть все, что стоит отметить. Обновите заголовок, чтобы отразить сборку и дату, которая скоро будет выпущена, и зафиксируйте ее.
Обновите файл setup.py, указав новый номер сборки. Обновите файл CHANGES.txt, чтобы добавить новый раздел заголовка для следующей невыпущенной версии. (т. е. новый пустой раздел «Появится сборка XXX, еще не выпущенная»)
Отправьте эти изменения на github, дождитесь завершения действий, а затем загрузите артефакты из этого запуска.
Загрузите артефакты .whl в pypi — мы делаем это перед отправкой тега, поскольку они могут быть отклонены из-за недопустимого README.md
. Сделано через py -3.? -m twine upload dist/*XXX*.whl
.
Создайте новый тег git для выпуска.
Обновите файл setup.py, указав новый номер сборки + «.1» (например, 123.1), чтобы будущие тестовые сборки не были ошибочно приняты за настоящую версию.
Убедитесь, что все отправлено на github, включая тег (т. е. git push --tags
).
Отправить письмо на python-win32
Это старый процесс, который использовался, когда для создания сборок использовалась локальная среда разработки. Сборка 306 была последней, выпущенной с этим процессом.
Убедитесь, что в файле CHANGES.txt есть все, что стоит отметить. Обновите заголовок, чтобы отразить сборку и дату, которая скоро будет выпущена, и зафиксируйте ее.
Обновите файл setup.py, указав новый номер сборки.
Выполните make_all.bat
, подождите вечно, проверьте артефакты.
Загрузите артефакты .whl в pypi — мы делаем это перед отправкой тега, поскольку они могут быть отклонены из-за недопустимого README.md
. Сделано через py -3.? -m twine upload dist/*XXX*.whl
.
Зафиксируйте setup.py (чтобы новый номер сборки находился в репозитории), создайте новый тег git.
Загрузите установщики .exe на github.
Обновите файл setup.py, указав новый номер сборки + «.1» (например, 123.1), чтобы будущие тестовые сборки не были ошибочно приняты за настоящую версию.
Убедитесь, что все отправлено на github, включая тег (т. е. git push --tags
).
Отправить письмо на python-win32