Dies ist die Readme-Datei für die Python für Win32-Erweiterungen (pywin32), die den Zugriff auf viele der Windows-APIs von Python aus ermöglicht.
Aktuelle bemerkenswerte Änderungen finden Sie in CHANGES.txt.
Die Dokumente sind eine lange und traurige Geschichte, aber es gibt jetzt eine Online-Version der Hilfedatei, die mit den Installationsprogrammen geliefert wird (danke @ofek!). Vieles davon ist sehr alt, aber einiges ist automatisch generiert und aktuell. Ich würde gerne helfen, die Dokumente zu entwirren!
Fühlen Sie sich frei, Probleme für alle Fehler (oder vermuteten Fehler) in pywin32 zu eröffnen. Pull-Requests für alle Bugs oder Features sind ebenfalls willkommen.
Bitte öffnen Sie Github-Probleme jedoch nicht für allgemeine Supportanfragen oder für Probleme oder Fragen bei der Verwendung der Module in diesem Paket – sie werden geschlossen. Bei solchen Problemen senden Sie bitte eine E-Mail an die Mailingliste python-win32. Beachten Sie, dass Sie die Liste abonnieren müssen, bevor Sie Beiträge veröffentlichen.
Binäre Veröffentlichungen werden nicht mehr unterstützt.
Build 306 war der letzte mit .exe-Installationsprogrammen. Sie sollten sie eigentlich nicht verwenden, aber wenn Sie sie wirklich brauchen, finden Sie sie hier
Sie sollten pywin32 über pip installieren – z. B.
python -m pip install --upgrade pywin32
Es gibt ein Post-Installationsskript (siehe unten), das nicht in virtuellen Umgebungen ausgeführt werden sollte; Es sollte nur in „globalen“ Installationen ausgeführt werden.
Für unveröffentlichte Änderungen können Sie von Github Actions erstellte Builds herunterladen – wählen Sie einen beliebigen „Workflow“ aus dem main
und laden Sie seine „Artefakte“ herunter.
Außerhalb einer virtuellen Umgebung möchten Sie möglicherweise COM-Objekte, Dienste usw. installieren. Dies können Sie tun, indem Sie Folgendes ausführen:
python Scripts/pywin32_postinstall.py -install
Aus dem Stammverzeichnis Ihrer Python-Installation.
Wenn Sie dies mit normalen Berechtigungen tun, ist es für Ihren Benutzer global (einige Dateien werden in das Stammverzeichnis Ihrer Python-Installation kopiert und einige Änderungen werden an HKCU vorgenommen). Wenn Sie dies von einem erhöhten Prozess aus ausführen, ist es global für die Maschine (Dateien werden nach System32 kopiert, HKLM wird geändert usw.).
Um es als Dienst auszuführen, möchten Sie pywin32 wahrscheinlich global über eine Eingabeaufforderung mit erhöhten Rechten installieren – siehe oben.
Sie müssen außerdem sicherstellen, dass Python an einem Ort installiert ist, an dem der Benutzer, der den Dienst ausführt, Zugriff auf die Installation hat und pywintypesXX.dll
und pythonXX.dll
laden kann. Insbesondere hat das LocalSystem
-Konto normalerweise keinen Zugriff auf Ihre lokale %USER%
-Verzeichnisstruktur.
Wenn beim Upgrade Probleme wie die folgenden auftreten:
The specified procedure could not be found
Entry-point not found
Normalerweise bedeutet es eines von zwei Dingen:
Sie haben eine Installation aktualisiert, bei der das Post-Installationsskript zuvor ausgeführt wurde. Sie sollten es also erneut ausführen:
python Scripts/pywin32_postinstall.py -install
Dadurch werden einige kleine Versuche unternommen, ältere, widersprüchliche Installationen zu bereinigen.
Auf Ihrem System sind weitere pywin32-DLLs installiert, jedoch an einem anderen Ort als die neuen. Dies passiert manchmal in Umgebungen, in denen Pywin32 vorinstalliert ist (z. B. Anaconda?).
Die möglichen Lösungen sind hier:
pywintypesXX.dll
und pythoncomXX.dll
(wobei XX
die Python-Version ist, z. B. „39“). Installieren Sie Visual Studio 2019 (funktioniert später wahrscheinlich, die Optionen können jedoch unterschiedlich sein). Befolgen Sie die Anweisungen unter „Umgebung erstellen“ für die Version, die Sie installieren.
(Die kostenlosen Compiler funktionieren wahrscheinlich auch, wurden aber noch nicht getestet – teilen Sie mir Ihre Erfahrungen mit!)
setup.py
ist ein Standard-Distutils-Build-Skript, Sie möchten also wahrscheinlich:
python setup.py install
oder
python setup.py --help
Für die Erstellung einiger Module sind unbekannte SDKs erforderlich. setup.py
sollte erfolgreich sein und Ihnen anmutig mitteilen, warum die Erstellung fehlgeschlagen ist. Wenn die Erstellung mit Ihrer Konfiguration tatsächlich fehlschlägt, öffnen Sie bitte ein Problem.
Die folgenden Schritte werden bei der Erstellung einer neuen Version ausgeführt – dies dient hauptsächlich dazu, eine Checkliste zu erstellen, damit @mhammond nicht vergisst, was zu tun ist :)
Seit Build 307 basiert der Release-Prozess auf den durch Github-Aktionen erstellten Artefakten.
Stellen Sie sicher, dass CHANGES.txt alle wichtigen Informationen enthält. Aktualisieren Sie den Header, um den Build und das Datum der bevorstehenden Veröffentlichung wiederzugeben, und schreiben Sie ihn fest.
Aktualisieren Sie setup.py mit der neuen Build-Nummer. Aktualisieren Sie CHANGES.txt, um einen neuen Überschriftenabschnitt für die nächste unveröffentlichte Version zu erhalten. (d. h. ein neuer, leerer Abschnitt „Kommt in Build XXX, noch unveröffentlicht“)
Übertragen Sie diese Änderungen auf Github, warten Sie, bis die Aktionen abgeschlossen sind, und laden Sie dann die Artefakte von diesem Lauf herunter.
Laden Sie .whl-Artefakte auf pypi hoch – wir tun dies, bevor wir das Tag übertragen, da sie möglicherweise aufgrund einer ungültigen README.md
abgelehnt werden. Geschehen über py -3.? -m twine upload dist/*XXX*.whl
.
Erstellen Sie ein neues Git-Tag für die Veröffentlichung.
Aktualisieren Sie setup.py mit der neuen Build-Nummer + „.1“ (z. B. 123.1), um sicherzustellen, dass zukünftige Test-Builds nicht mit der tatsächlichen Version verwechselt werden.
Stellen Sie sicher, dass alles an Github gesendet wird, einschließlich des Tags (z. B. git push --tags
).
Senden Sie eine E-Mail an python-win32
Dies ist der alte Prozess, der verwendet wurde, als eine lokale Entwicklungsumgebung zum Erstellen der Builds verwendet wurde. Build 306 war der letzte, der mit diesem Prozess veröffentlicht wurde.
Stellen Sie sicher, dass CHANGES.txt alle wichtigen Informationen enthält. Aktualisieren Sie den Header, um den Build und das Datum der bevorstehenden Veröffentlichung wiederzugeben, und schreiben Sie ihn fest.
Aktualisieren Sie setup.py mit der neuen Build-Nummer.
Führen Sie make_all.bat
aus, warten Sie ewig und testen Sie die Artefakte.
Laden Sie .whl-Artefakte auf pypi hoch – wir tun dies, bevor wir das Tag übertragen, da sie möglicherweise aufgrund einer ungültigen README.md
abgelehnt werden. Geschehen über py -3.? -m twine upload dist/*XXX*.whl
.
Übernehmen Sie setup.py (damit die neue Build-Nummer im Repo enthalten ist) und erstellen Sie ein neues Git-Tag
Laden Sie die EXE-Installationsprogramme auf Github hoch.
Aktualisieren Sie setup.py mit der neuen Build-Nummer + „.1“ (z. B. 123.1), um sicherzustellen, dass zukünftige Test-Builds nicht mit der tatsächlichen Version verwechselt werden.
Stellen Sie sicher, dass alles an Github gesendet wird, einschließlich des Tags (z. B. git push --tags
).
Senden Sie eine E-Mail an python-win32