Hier finden Sie eine Zusammenfassung einiger Grundkenntnisse und nützlicher Informationen, die Sie beim Erstellen eines Python-Binärpakets für Windows kennen sollten.
Es ist sehr unwahrscheinlich, dass Benutzer von Python unter Windows über eine Umgebung zum Erstellen von Python-Erweiterungen verfügen. Ursprünglich haben weniger Benutzer den Compiler installiert als Mac, und in der Mac-Version ist der Compiler für jede Betriebssystemversion festgelegt, während in Windows die Version des Compilers durch die Version von Python anstelle des Betriebssystems bestimmt wird. Aus irgendeinem Grund ist es fast Null, dass jemand anders als jemand, der die Python-Entwicklungsumgebung erforscht und vorbereitet hat, den entsprechenden Compiler eingerichtet hat.
Andererseits ist in Windows die von python.org bereitgestellte offizielle Binärdatei zu einem starken Standard geworden, und die von Dritten vertriebene Python-Umgebung ist ebenfalls nahezu binärkompatibel, sodass Benutzer das Binärpaket selbst verteilen können. Sie können Python-Erweiterungsmodule verwenden, ohne sie zu erstellen. Die Tatsache, dass die Compilerversion nicht an das Betriebssystem gebunden ist, ist auch für den Binärpaketanbieter von Vorteil, da nicht mehrere Betriebssystemversionen vorbereitet werden müssen.
Daher wird empfohlen, dass der Anbieter des Pakets, das das Erweiterungsmodul enthält, nach Möglichkeit ein Binärpaket für Windows vorbereitet.
Selbst wenn Sie heutzutage keine umfangreichen Tools wie Windows SDK oder Visual Studio unter Windows installieren möchten, können Sie EC2, Azure, GCP usw. verwenden, um stündlich eine Windows-Umgebung mit einer stärkeren CPU wie Atom zu verwenden. Ich werde.
Das Standardinstallationsverzeichnis ist C: \\ Python34
für Python 3.4. Sie können es ändern, aber Verzeichnisse mit Leerzeichen vermeiden, um Probleme zu vermeiden.
Wenn Sie sowohl die 64-Bit-Version als auch die 32-Bit-Version installieren, ist das Standardinstallationsziel dasselbe. Ändern Sie daher eines in "C: \ Python34_amd64". Es ist etwas leichter, wenn Sie IDLE, TK, Tests, Dokumentation usw. in den Installationsoptionen entfernen.
Wenn Sie Python 3.3 oder höher installieren, wird ein Python-Launcher namens "py" installiert.
Dieser Launcher startet die 64-Bit-Version von Python 3.4 mit py -3.4
und die 32-Bit-Version von Python 2.7 mit py -2.7-32
.
Dies ist nützlich, da Sie nicht mehrmals lange vollständige Pfade eingeben oder die PATH-Einstellungen von Build zu Build ändern müssen. Nicht nur, wenn Sie "setup.py" ausführen, sondern auch, wenn Sie den Befehl "pip" ausführen, können Sie ihn wie "py -2.7-32 -m pip" mit der Option "-m" ausführen.
Python kann standardmäßig Binärpakete im Installationsformat (exe oder msi) erstellen. Pakete dieses Formulars können jedoch nicht in virtualenv installiert oder installiert werden. (Wenn Sie sich das ansehen, ist es eine gute Verteilungsmethode für Benutzer, die mit Windows vertraut sind.)
Das derzeit empfohlene Binärpaket für die Pip-Installation ist Rad.
Um ein Rad zu bauen, verwenden Sie pip install -U Wheel Setuptools
, um die neueste Version von Wheel und Setuptools zu erhalten, und verwenden Sie dann den Befehl python setup.py bdist_wheel
.
Obwohl Wheel ein Binärpaket ist, hat es, selbst wenn Sie eine reine Python-Bibliothek verteilen, Vorteile wie eine schnellere Installation als ".tar.gz". Lassen Sie es uns also aktiv nutzen.
Wenn Sie ein in C oder C ++ geschriebenes Programm ausführen, benötigen Sie eine Bibliothek namens Runtime Library. Diese Bibliothek enthält Standardbibliotheksfunktionen wie fopen und malloc.
Die vom Visual C ++ - Compiler verwendete Laufzeitbibliothek ist MSVCRT. Es wird für jede Compilerversion bereitgestellt. Bitte beachten Sie, dass die VC-Version nicht mit der VS-Version (Jahr) übereinstimmt.
Es ist möglich, dass ein Prozess mehrere Versionen von MSVCRT gleichzeitig verwendet, es ist jedoch sicherer, sie nach Möglichkeit zu vereinheitlichen. Daher sollten Sie beim Erstellen einer Python-Erweiterung die VC verwenden, mit der die offizielle Version von Python für Windows erstellt wurde.
VS-Version | VC-Version | Python |
---|---|---|
2008 | 9 | 2.7 |
2010 | 10 | 3.4 |
2012 | 11 | |
2013 | 12 | |
2015 | 14 | 3.5 |
Python 2.7
Die VC für Python 2.7 ist fünf Jahre alt, daher war die Vorbereitung jetzt mühsam.
Glücklicherweise hat Microsoft dieses Jahr [Microsoft Visual C ++ - Compiler für Python 2.7] angekündigt (http://www.microsoft.com/en-us/download/details.aspx?id=44266). Installieren Sie es jetzt einfach und Sie erhalten eine Build-Umgebung für die Python 2.7-Erweiterung.
Beim Erstellen wird es in der Registrierung durchsucht und verwendet, ohne sich um Umgebungsvariablen kümmern zu müssen. Führen Sie den Befehl daher einfach an der Eingabeaufforderung aus. Im folgenden Beispiel wird für jede der 32-Bit- und 64-Bit-Versionen ein Rad erstellt. Das erstellte Rad befindet sich im Verzeichnis "dists /" und kann "pip install" sein.
> py -2.7-32 setup.py bdist_wheel
> py -2.7-x64 setup.py bdist_wheel
Python 3.4
Es gibt die Express Edition von Visual Studio und die kürzlich veröffentlichte Community Edition, um VC kostenlos zu erhalten.
Leider sind in der Community Edition 11 VCs verfügbar, sodass Sie auf Python 3.5 warten müssen. Es wird immer schwieriger, einen Weg zu finden, um Visual Studio 2010 Express Edition zu erhalten. Selbst wenn Sie es leicht durchgehen, gibt es nur 2012 Websites an der Spitze. Darüber hinaus hat VS 2010 Express Edition die Einschränkung, dass der 64-Bit-Compiler nicht verwendet werden kann. Dies macht es unmöglich, eine 64-Bit-Version des Python-Binärpakets vorzubereiten.
Installieren Sie daher Windows SDK 7.1 anstelle von Visual Studio. Sie können auswählen, welche Teile während der Installation installiert werden sollen. Wählen Sie daher nur die C ++ - Compiler x86 und amd64 aus.
Bei Verwendung des Windows SDK erkennt Python im Gegensatz zu Visual Studio den Compiler in der Registrierung nicht automatisch. Daher müssen Sie Umgebungsvariablen festlegen. Wenn Sie das SDK installieren, wird im Startmenü eine Eingabeaufforderungsverknüpfung mit dem Namen "Windows SDK 7.1-Eingabeaufforderung" erstellt. Kopieren Sie diese und bereiten Sie eine Verknüpfung für die Erstellung der Python-Erweiterung vor. Stellen Sie das "Link-Ziel" der Verknüpfung wie folgt ein und geben Sie den Arbeitsordner als Ihren Arbeitsordner an.
Linkziel (Wenn Sie das Installationsziel von Windows SDK ändern, schreiben Sie diesen Teil neu):
> #32bit Version
> C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /x86
> #64bit Version
> C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /x64
Jetzt müssen Sie nur noch von jeder Verknüpfung aus starten und den Befehl wie in 2.7 ausführen.
> #32bit Version
> py -3.4-32 setup.py bdist_wheel
> #64bit Version
> py -3.4-x64 setup.py bdist_wheel
Python 3.5
Sie können Visual Studio Community Edition verwenden. Wie bei Python 2.7 können Sie problemlos Erweiterungen erstellen.
Außerdem [Visual C ++ Build Tools](http://blogs.msdn.com/b/vcblog/archive/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for -build-environment.aspx) wurde in der Beta angekündigt. Es ist nicht verifiziert, aber Sie werden wahrscheinlich den Compiler und andere Tools erhalten, die Sie benötigen, ohne das schwergewichtige Visual Studio wie Python 2.7 installieren zu müssen.
Installieren und testen Sie das resultierende Rad mit "pip install", bevor Sie es auf PyPI hochladen. Eine andere Möglichkeit zum Hochladen auf PyPI ist die Verwendung von setup.py, wie z. B. "py -3.4-32 setup.py bdist_wheel upload". Sie müssen das Rad jedoch nach dem Testen neu erstellen.
Laut dem Pytohn Packaging User Guide lautet die derzeit empfohlene Methode zum Hochladen von Paketen [twine](https: //pypi.python). org / pypi / twine). Sie müssen nur Twine auf einem Python installieren und können Pakete für alle Pythons hochladen.
> py -3.4 -m pip install -U twine
> py -3.4 -m twine upload dist/yourpackage-1.2.3-*.whl
setup.py bdist_wheel
ein Paket im Wheel-Stil.