Comment faire pour qu'un script Python autonome fonctionne sans aucune dépendance?

je suis en train de construire une application Python et je ne veux pas forcer mes clients à installer Python et des modules. Je veux aussi faire ma demande fermé-source.

alors, y a-t-il un moyen de compiler des scripts Python pour des exécutables autonomes?

469
demandé sur ThinkingStiff 2011-03-28 15:04:09

16 réponses

vous pouvez utiliser py2exe comme déjà répondu et utiliser cython pour convertir votre clé .py fichiers dans .pyc , c compilés fichiers, comme .dll dans Windows et .so dans linux, beaucoup plus difficile à revenir que commun .pyo et .pyc fichiers (et aussi gagner en performance!)

167
répondu neurino 2015-04-30 20:32:01

vous pouvez utiliser PyInstaller pour empaqueter des programmes Python comme exécutables autonomes. Il fonctionne sous Windows, Linux et Mac.

PyInstaller Démarrage Rapide

installer PyInstaller de PyPI:

pip install pyinstaller

allez dans le répertoire de votre programme et lancez:

pyinstaller yourprogram.py

cela générera le faisceau dans un sous-répertoire appelé dist .

pour une revue plus détaillée, voir le manuel .

146
répondu Rumple Stiltskin 2018-02-27 19:09:04

que Vous pourriez vouloir étudier Nuitka . Il prend du code source python et le convertit en appels D'API C++. Puis il se compile dans un exécutable binaire (ELF sous Linux). Il existe depuis quelques années et supporte une large gamme de versions de Python.

vous obtiendrez probablement aussi une amélioration de performance si vous l'utilisez. Recommandé.

64
répondu cdarke 2013-09-09 07:11:55

et une troisième option est cx_Freeze , ce qui est cross-platform.

21
répondu Katriel 2011-03-28 11:43:57

je voudrais compiler quelques informations utiles sur la création de fichiers autonomes sur windows en utilisant Python 2.7.

j'ai utilisé py2exe et ça fonctionne, mais j'ai eu quelques problèmes.

cette dernière raison m'a fait essayer PyInstaller http://www.pyinstaller.org / .

à mon avis, il est beaucoup mieux parce que:

  • Il est plus facile à utiliser.

je suggère de créer un .fichier bat avec les lignes suivantes par exemple (pyinstaller.exe doit être dans le Path de Windows):

pyinstaller.exe --onefile MyCode.py

donc, je pense que, au moins pour python 2.7, une option meilleure et plus simple est PyInstaller.

19
répondu Diego 2017-06-11 20:01:14

Oui, il est possible de compiler des scripts Python dans un exécutable autonome.

PyInstaller peut être utilisé pour convertir des programmes Python en exécutables autonomes, sous Windows , Linux , Mac OS X , FreeBSD , Solaris et Aix . C'est l'une des convertisseurs.

py2exe convertit les scripts Python en exécutables uniquement sur la plate-forme Windows.

Cython est un compilateur statique pour le langage de programmation Python et le langage de programmation Cython étendu.

18
répondu fury.slay 2017-02-17 07:39:42

vous pouvez, comme py2exe . vous y trouverez aussi des infos pour le faire sous linux

17
répondu user237419 2011-03-28 11:06:41

utiliser py2exe.... utiliser ci-dessous configurer les fichiers:

 from distutils.core import setup
 import py2exe

 from distutils.filelist import findall
 import matplotlib

 setup(
       console=['PlotMemInfo.py'],

       options={
                'py2exe': {
                'packages' : ['matplotlib'],
            'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                 'libgobject-2.0-0.dll',
                 'libgdk_pixbuf-2.0-0.dll']
                          }
                },
       data_files = matplotlib.get_py2exe_datafiles()
     )
13
répondu Anand 2014-01-09 06:15:46

je recommande aussi pyinstaller pour une meilleure compatibilité arrière telle que python 2.3-2.7.

pour py2exe , vous devez avoir python 2.6

9
répondu yantaq 2013-04-24 00:55:24

pour les scripts Python 3.2 Le seul choix est Cxfreeze. Construisez - le à partir de sources sinon ça ne marchera pas.

pour python 2.x je suggère pyinstaller car il peut empaqueter un programme python dans un seul exécutable, contrairement à CxFreeze qui produit aussi des bibliothèques.

8
répondu ravi.chunduru 2012-08-28 20:14:54

py2exe fera le fichier exe que vous voulez mais vous devez avoir la même version de MSVCR90.sur la machine, tu vas utiliser ton nouvel exe. Voir http://www.py2exe.org/index.cgi/Tutorial pour plus d'information.

6
répondu Belial 2014-07-29 06:21:34

vous pouvez trouver la liste des services de distribution énumérés @ https://wiki.python.org/moin/DistributionUtilities .

j'utilise bbfreeze et il fonctionne très bien (mais il n'a pas encore le support de python 3).

5
répondu Joe 2015-04-08 13:25:27

pas exactement un packaging du code python, mais il y a maintenant aussi grumpy de google, qui transpose le code à aller. Il ne supporte pas l'api python C, donc il peut ne pas fonctionner pour tous les projets.

4
répondu freeformz 2017-01-18 18:34:23

utilisez Cython pour convertir en c, compiler et lier avec gcc. Un autre pourrait être, faire les fonctions de base en c ( celles que vous voulez rendre difficiles à inverser), les compiler et utiliser Python boost pour importer le code compilé (en plus vous obtenez une exécution de code beaucoup plus rapide). utilisez ensuite l'outil mentionné à distribuer.

2
répondu F.Moure 2017-01-24 04:50:02

on m'a dit que PyRun, https://www.egenix.com/products/python/PyRun / , est également une option.

1
répondu Kraig Brockschmidt - MSFT 2017-03-28 17:48:13

en utilisant pyinstaller, j'ai trouvé une meilleure méthode en utilisant le raccourci vers le .exe plutôt que de faire --onefile . Quoi qu'il en soit, il y a probablement quelques fichiers de données autour et si vous utilisez une application basée sur le site alors votre programme dépend de html, js, CSS fichiers trop. Inutile de déplacer tous ces dossiers quelque part.. au lieu que si nous déplaçons le chemin du travail.

faire un raccourci vers l'exe, le déplacer en haut et définir la cible et les chemins de démarrage comme spécifié, pour avoir des chemins relatifs va dist\dossier: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" Peut renommer shortcut en quelque chose d'aussi renommer en "GTFS-Manager "

Maintenant, quand je double-clique sur le raccourci, c'est comme si j'python-exécuté le fichier! J'ai trouvé cette approche mieux que le --onefile l'un:

  1. dans le cas d'onefile, il y a un problème avec un .dll manquante pour win7 OS qui nécessite une installation préalable, etc. Bâillement. Avec la compilation habituelle avec plusieurs fichiers, Pas de problèmes de ce genre.
  2. tous les fichiers que mon script python utilise (il déploie un serveur web tornado et a besoin d'un site entier de fichiers pour y être!) n'ont pas besoin d'être déplacé n'importe où: il suffit de créer le raccourci en haut.
  3. je peux en fait utiliser ce même dossier dans ubuntu (exécuter python3 myfile.py) et windows (double-cliquez sur le raccourci).
  4. Je n'ai pas besoin de m'embêter avec le piratage excessivement compliqué de .fichier spec pour inclure des fichiers de données, etc.

oh, souvenez-vous de supprimer du dossier construire après la construction, permettra d'économiser sur la taille.

1
répondu Nikhil VJ 2018-04-24 21:05:45