Voici un résumé de certaines connaissances de base et des informations utiles que vous devez connaître lors de la création d'un package binaire Python pour Windows.
Il est très peu probable que les utilisateurs de Python sous Windows disposent d'un environnement pour créer des extensions Python. À l'origine, il y a moins d'utilisateurs qui ont installé le compilateur que Mac, et dans la version Mac, le compilateur est fixé pour chaque version du système d'exploitation, alors que sous Windows, la version du compilateur est déterminée par la version de Python au lieu du système d'exploitation. Pour une raison quelconque, il est presque nul qu'une personne autre que quelqu'un qui a recherché et préparé l'environnement de développement Python ait mis en place le compilateur approprié.
D'autre part, dans Windows, le binaire officiel fourni par python.org est devenu un standard fort, et l'environnement Python distribué par des tiers est également presque compatible binaire, de sorte que les utilisateurs peuvent distribuer le paquet binaire par eux-mêmes. Vous pouvez utiliser les modules d'extension Python sans construire. Le fait que la version du compilateur ne soit pas liée au système d'exploitation est également un avantage pour le fournisseur de packages binaires, car il n'est pas nécessaire de préparer plusieurs versions du système d'exploitation.
Par conséquent, il est recommandé que le fournisseur du package contenant le module d'extension prépare un package binaire pour Windows si possible.
De nos jours, même si vous ne souhaitez pas installer d'outils lourds comme le SDK Windows ou Visual Studio sur votre Windows, vous pouvez utiliser EC2, Azure, GCP, etc. pour utiliser un environnement Windows avec un processeur plus puissant tel qu'Atom sur une base horaire. Je vais.
Le répertoire d'installation standard est C: \\ Python34
pour Python 3.4. Vous pouvez le modifier, mais évitez les répertoires contenant des espaces pour éviter les problèmes.
Si vous installez à la fois la version 64 bits et la version 32 bits, la destination d'installation par défaut est la même, changez-en une en C: \\ Python34_amd64
. Ce sera un peu plus léger si vous supprimez IDLE, TK, tests, documentation, etc. dans les options d'installation.
Lorsque vous installez Python 3.3 ou version ultérieure, un lanceur Python appelé py
est installé.
Ce lanceur lance la version 64 bits de Python 3.4 avec py -3.4
et la version 32 bits de Python 2.7 avec py -2.7-32
.
Ceci est utile car vous n'avez pas à entrer plusieurs fois de longs chemins complets ou à changer les paramètres PATH d'une génération à l'autre. Non seulement lorsque vous exécutez setup.py
, mais aussi lorsque vous exécutez la commande pip
, vous pouvez l'exécuter comme py -2.7-32 -m pip
avec l'option -m
.
Python peut créer des packages binaires au format installeur (exe ou msi) par défaut. Cependant, les packages de cette forme ne peuvent pas être installés ou installés par pip dans virtualenv. (Si vous regardez cela, c'est une bonne méthode de distribution pour les utilisateurs familiers avec Windows.)
Le paquet binaire actuellement recommandé pour l'installation de pip est wheel.
Pour construire une roue, utilisez pip install -U wheel setuptools
pour obtenir la dernière version de wheel et setuptools, puis utilisez la commande python setup.py bdist_wheel
.
Bien que wheel soit un paquet binaire, même si vous distribuez une bibliothèque Python pure, il présente des avantages tels qu'une installation plus rapide que .tar.gz
, alors utilisons-le activement.
Lorsque vous exécutez un programme écrit en C ou C ++, vous avez besoin d'une bibliothèque appelée sa bibliothèque d'exécution. Cette bibliothèque contient des fonctions de bibliothèque standard telles que fopen et malloc.
La bibliothèque d'exécution utilisée par le compilateur Visual C ++ est MSVCRT. Il est fourni pour chaque version du compilateur. Veuillez noter que la version VC ne correspond pas à la version VS (année).
Il est possible pour un processus d'utiliser plusieurs versions de MSVCRT en même temps, mais il est plus sûr de les unifier si possible. Par conséquent, lors de la création d'une extension Python, vous devez utiliser le VC qui a été utilisé pour créer la version officielle de Python pour Windows.
Version VS | Version VC | Python |
---|---|---|
2008 | 9 | 2.7 |
2010 | 10 | 3.4 |
2012 | 11 | |
2013 | 12 | |
2015 | 14 | 3.5 |
Python 2.7
Le VC pour Python 2.7 a cinq ans, il était donc difficile de se préparer maintenant.
Heureusement, cette année, Microsoft a annoncé Compilateur Microsoft Visual C ++ pour Python 2.7. Maintenant, installez-le et vous aurez un environnement de construction pour l'extension Python 2.7.
Lors de la construction, il sera recherché dans le registre et utilisé sans se soucier des variables d'environnement, alors exécutez simplement la commande à partir de l'invite de commande normalement. Dans l'exemple suivant, une roue est créée pour chacune des versions 32 bits et 64 bits. La roue créée se trouve dans le répertoire dists /
et peut être pip install
.
> py -2.7-32 setup.py bdist_wheel
> py -2.7-x64 setup.py bdist_wheel
Python 3.4
Il existe Express Edition de Visual Studio et la version récente de Community Edition pour obtenir gratuitement VC.
Malheureusement, 11 VC sont disponibles dans l'édition communautaire, vous devrez donc attendre Python 3.5. Il est de plus en plus difficile de trouver un moyen d'obtenir Visual Studio 2010 Express Edition. Même si vous le parcourez à la légère, il n'y a que 2012 sites au sommet. En outre, VS 2010 Express Edition a une limitation selon laquelle le compilateur 64 bits ne peut pas être utilisé. Cela rend impossible la préparation d'une version 64 bits du package binaire Python.
Par conséquent, installez Windows SDK 7.1 au lieu de Visual Studio. Vous pouvez choisir les composants à installer lors de l'installation, choisissez donc uniquement les compilateurs C ++ x86 et amd64.
Lorsque vous utilisez le SDK Windows, contrairement à Visual Studio, Python ne détecte pas automatiquement le compilateur à partir du registre, vous devez donc définir des variables d'environnement. Lorsque vous installez le SDK, un raccourci d'invite de commande appelé «Windows SDK 7.1 Command Prompt» sera créé dans le menu Démarrer, alors copiez-le et préparez un raccourci pour la construction de l'extension Python. Définissez la «destination du lien» du raccourci comme suit et spécifiez le dossier de travail comme dossier de travail.
Destination du lien (si vous modifiez la destination d'installation du SDK Windows, veuillez réécrire cette partie):
> #Version 32 bits
> 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
> #Version 64 bits
> 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
Tout ce que vous avez à faire maintenant est de lancer à partir de chaque raccourci et d'exécuter la commande comme vous l'avez fait dans 2.7.
> #Version 32 bits
> py -3.4-32 setup.py bdist_wheel
> #Version 64 bits
> py -3.4-x64 setup.py bdist_wheel
Python 3.5
Vous pouvez utiliser Visual Studio Community Edition. Comme avec Python 2.7, vous pouvez créer des extensions sans aucun problème.
En outre, [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-environnements.aspx) a été annoncé en version bêta. Ce n'est pas vérifié, mais vous obtiendrez probablement le compilateur et les autres outils dont vous avez besoin sans avoir à installer le lourd Visual Studio, tout comme Python 2.7.
Installez et testez la roue résultante avec pip install
avant de la télécharger sur PyPI.
Vous pouvez également utiliser setup.py pour télécharger sur PyPI, comme py -3.4-32 setup.py bdist_wheel upload
, mais vous devrez recréer la roue après le test.
Selon le Guide de l'utilisateur Pytohn Packaging, la méthode de téléchargement de package actuellement recommandée est [twine](https: //pypi.python. org / pypi / twine). Vous n'avez besoin d'installer de la ficelle que sur un Python et vous pouvez télécharger des packages pour tous les Pythons.
> py -3.4 -m pip install -U twine
> py -3.4 -m twine upload dist/yourpackage-1.2.3-*.whl
setup.py bdist_wheel
pour créer un package de style wheel.Recommended Posts