Il y a beaucoup, beaucoup, beaucoup, beaucoup, beaucoup, beaucoup, beaucoup de façons de le faire. Je vais patiner sur les principes derrière chacun, et c'est un cas d'utilisation.
1. Un environnement python
Il y a plusieurs façons de procéder. pipenv
, conda,, requirments.txt
etc., etc.
Avec certains d'entre eux, vous pouvez spécifier des versions de python. Avec d'autres, spécifiez simplement une gamme de versions de python avec lesquelles vous savez qu'il fonctionne - par exemple, si vous utilisez python 3.7, il est peu probable qu'il ne prenne pas en charge la version 3.6; il n'y a qu'un ou deux changements mineurs. 3.8 devrait également fonctionner.
Une autre méthode similaire est setup.py
. Ceux-ci sont généralement utilisés pour distribuer des bibliothèques - comme PyInstaller (une autre solution que je mentionnerai ci-dessous), ou numpy, ou wxPython, ou PyQt5, etc. - pour une utilisation en ligne d'importation / commande. Le guide d'empaquetage python est très utile, et il existe de nombreux tutoriels. (google python setup.py tutorial
) Vous pouvez également spécifier des exigences dans ces fichiers.
2. Un conteneur
Docker est le grand. Si vous n'en avez pas entendu parler, je serai surpris. Un rapide google d'un résumé arrive avec cela , dont je citerai une partie:
Alors, pourquoi tout le monde aime les conteneurs et Docker? James Bottomley, anciennement CTO de Parallels pour la virtualisation des serveurs et développeur leader du noyau Linux, a expliqué que les hyperviseurs VM, tels que Hyper-V, KVM et Xen, sont tous "basés sur l'émulation de matériel virtuel. Cela signifie qu'ils sont gros en termes de Configuration requise."
Les conteneurs, cependant, utilisent des systèmes d'exploitation partagés. Cela signifie qu'ils sont beaucoup plus efficaces que les hyperviseurs en termes de ressources système. Au lieu de virtualiser le matériel, les conteneurs reposent sur une seule instance Linux. Cela signifie que vous pouvez «laisser derrière vous les déchets inutiles de VM à 99,9%, vous laissant avec une petite capsule soignée contenant votre application».
Cela devrait vous le résumer. (Notez que vous n'avez pas besoin d'un système d'exploitation spécifique pour les conteneurs.)
3. Un fichier exécutable
Il existe 2 outils principaux qui le font au moment de la rédaction. PyInstaller et cx_Freeze. Les deux sont activement développés. Les deux sont open source.
Vous prenez votre script et l'outil le compile en bytecode, trouve les importations, les copie et crée un environnement python portable qui exécute votre script sur le système cible sans que l'utilisateur final n'ait besoin de python.
Personnellement, je préfère PyInstaller - je suis l'un des développeurs. PyInstaller fournit toutes ses fonctionnalités via un script de ligne de commande, et prend en charge la plupart des bibliothèques auxquelles vous pouvez penser - et est extensible pour en prendre davantage en charge. cx_Freeze nécessite un script de configuration.
Les deux outils prennent en charge Windows, Linux, macOS, etc. PyInstaller peut créer des exes de fichier unique ou un ensemble de dossiers, tandis que cx_Freeze ne prend en charge qu'un ensemble de dossiers. PyInstaller 3.6 prend en charge python 2.7 et 3.5-3.7 - mais 4.0 ne prend pas en charge python 2. cx_Freeze a supprimé la prise en charge de python 2 depuis la dernière version majeure (6.0 je pense).
Quoi qu'il en soit, assez sur les fonctionnalités des outils; vous pouvez les examiner vous-même. (Voir https://pyinstaller.org et https://cx-freeze.readthedocs.io pour plus d'informations)
Lorsque vous utilisez cette méthode de distribution, vous fournissez généralement du code source sur le référentiel GitHub, quelques exes (un pour chaque plate-forme) prêts à être téléchargés et des instructions sur la façon de construire le code dans un fichier exécutable.