J'ai commencé à apprendre python et je suis également un nouvel utilisateur d'Ubuntu. J'ai besoin de connaître les méthodes de compilation des fichiers .py
. J'ai essayé avec la commande
python "hello.py"
Quels sont les autres moyens de compiler Python?
En ajoutant à la réponse de Bryan, si vous souhaitez simplement compiler un fichier ou un groupe de fichiers à partir d'un terminal, le module py_compile
peut être exécuté en tant que script de la manière suivante:
python -m py_compile fileA.py fileB.py fileC.py ...
Sachez également que vous n'avez pas besoin de compiler un fichier .py
pour l'exécuter. Python est un langage interprété, et vous pouvez exécuter les scripts directement, en utilisant:
python hello.py
Ou bien, exécutez votre script en ajoutant #!/usr/bin/env python
en haut du script, en rendant le fichier exécutable avec chmod +x hello.py
, puis en exécutant:
./hello.py
Le fait que Python compile en interne votre script .py
en fichiers bytecode .pyc
pour des raisons de performances est un détail de la mise en œuvre, et à moins que vous n'ayez une raison solide de le faire, laissez python décider lui-même quand et si compiler.
Découvrez ce lien Compiler en Python
Au milieu de la page, il est question du module py_compile pouvant être importé. La syntaxe est la suivante:
import py_compile
py_compile.compile("file.py")
Cette méthode de compilation n'exécutera pas le module, pas plus que l'exécution de python fichier.py.
Il existe également une méthode qui compile une arborescence de répertoires complète, mais je vous laisse consulter le lien pour voir comment cela s'exécute.
J'espère que cela t'aides.
Vous pouvez également essayer compileall
:
python -m compileall ./
Vous pouvez compiler Python scripts en un code binaire en utilisant différentes méthodes, mais j'ai découvert qu'utiliser Nuitka était plus efficace.
Nuitka est un compilateur Python-to-C++ qui supporte presque toutes les versions de python.
La syntaxe de la commande est aussi simple que
nuitka hello.py
Goto http://nuitka.net/doc/user-manual.html pour plus d'informations.