web-dev-qa-db-fra.com

Est-il possible de compiler un programme écrit en Python?

Je suis nouveau dans le langage de programmation Python. Je me demandais s'il était possible de compiler un programme à écrire en Python.

Est-il possible de convertir des scripts Python en certains langages de programmation de niveau inférieur qui peuvent ensuite être compilés en code binaire?

Un développeur qui envisage de coder en Python pourrait vouloir garder la possibilité ouverte pour pouvoir aller plus tard pour la distribution binaire.

44
bjh Hans

Je pense que Compiler Python Code serait un bon point de départ:

Le code source Python est automatiquement compilé en Python octet par l'interpréteur CPython. Le code compilé est généralement stocké dans des fichiers PYC (ou PYO), et est régénéré lorsque la source est mise à jour, ou lorsque cela est nécessaire) .

Pour distribuer un programme à des personnes qui ont déjà installé Python installé, vous pouvez envoyer les fichiers PY ou les fichiers PYC. Dans les versions récentes, vous pouvez également créer une archive Zip contenant des fichiers PY ou PYC, et utilisez un petit "script d'amorçage" pour ajouter cette archive Zip au chemin.

Pour "compiler" un programme Python dans un exécutable, utilisez un outil de regroupement, tel que l'installateur de Gordon McMillan (téléchargement alternatif) (multiplateforme), py2exe de Thomas Heller (Windows), cx_Freeze d'Anthony Tuininga (multiplateforme) ou py2app de Bob Ippolito (Mac). Ces outils placent vos modules et fichiers de données dans une sorte de fichier d'archive, et créent un exécutable qui configure automatiquement les choses de sorte que les modules soient importés de cette archive. Certains outils peuvent intégrer l'archive dans l'exécutable lui-même.

40
Andrew Hare

Si vous le voulez vraiment, vous pouvez toujours compiler avec Cython. Cela générera du code C, que vous pourrez ensuite compiler avec n'importe quel compilateur C tel que GCC.

18
carl

Python, en tant que langage dynamique, ne peut pas être "compilé" en code machine statiquement, comme C ou COBOL. Vous aurez toujours besoin d'un interprète pour exécuter le code, qui, par définition dans le langage, est une opération dynamique.

Vous pouvez "traduire" le code source en bytecode, qui est juste un processus intermédiaire que l'interprète fait pour accélérer le chargement du code, il convertit les fichiers texte, avec des commentaires, des espaces vides, des mots comme 'if', 'def', 'in', etc en code binaire, mais les opérations derrière sont exactement les mêmes, en Python, pas en code machine ou dans tout autre langage. C'est ce qu'il est stocké dans les fichiers .pyc et il est également portable entre les architectures.

Probablement ce dont vous avez besoin ce n'est pas de "compiler" le code (ce qui n'est pas possible) mais "d'incorporer" un interprète (dans la bonne architecture) avec le code pour permettre d'exécuter le code sans installation externe de l'interpréteur. Pour ce faire, vous pouvez utiliser tous ces outils comme py2exe ou cx_Freeze.

Peut-être que je suis un peu pédant à ce sujet :-P

14
Khelben

Vous n'avez pas besoin de le compiler. la première fois que vous l'utilisez (importez), elle est compilée par l'interpréteur CPython. Mais si vous voulez vraiment compiler, il existe plusieurs options.

Compiler en exe

Ou 2 compilez juste un fichier * .py spécifique, vous pouvez simplement utiliser

import py_compile
py_compile.compile("yourpythoncode.py")
10
Eugene Ramirez

Pour éviter la redondance, je ne répète pas ma réponse ici.

Veuillez vous référer à ma réponse ici . (notez que la réponse ne couvre que la compilation en bytecode python .)

4
Abhishek Kashyap

python est un langage interprété, vous n'avez donc pas besoin de compiler vos scripts pour les exécuter. Le moyen le plus simple de le lancer est de naviguer vers son dossier dans un terminal et d'exécuter "python somefile.py". Cela dépend de l'installation de python à partir de le site python.

Vous pouvez compiler python apps, mais ce n'est généralement pas quelque chose qu'un nouveau développeur doit faire initialement. Si c'est ce que vous cherchez, jetez un œil à py2exe =. Cela prendra votre script python et le conditionnera comme un fichier exécutable comme n'importe quel programme sur votre ordinateur Windows. Vous pouvez également compiler des fichiers individuels à l'aide de python, comme décrit dans la section "Compilation Python modules à code d'octets "section sur ce site.

2
Seburdis

python compile à la volée lorsque vous l'exécutez.

Exécutez un fichier .py par (linux): python abc.py

0
joetsuihk