Compiler principal programme en Python à l'aide de Cython
J'ai un Python2.6 programme qui permet de charger des modules Python compilé .donc les fichiers à l'aide de Cython. J'ai utilisé Cython pour compiler le .py modules .donc les fichiers et tout fonctionne bien.
C'est le setup.py le fichier que j'utilise avec Cython:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("ldap", ["ldap.pyx"]),
Extension("checker", ["checker.pyx"]),
Extension("finder", ["finder.pyx"]),
Extension("utils", ["utils.pyx"]),
]
setup(
name = 'bchecker',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
Donc je sais que je peux compiler les modules Python à l'aide de Cython (je suppose que Cython crée " C " des fichiers à partir de mes fichiers Python et les compile), mais puis-je compiler mon principal programme en Python pour quelque chose que je peux exécuter sur une plate-forme Linux? Si oui, un Cython exemple de ligne de commande serait appréciée. Merci.
- Ont été l'une de ces réponses utiles? Avez-vous ce travail? Si oui, veuillez accepter une réponse
- Je doute que cela ne sera jamais marqué - l'utilisateur a été vu pour la dernière fois par jour après la question est de modifier la date.
Vous devez vous connecter pour publier un commentaire.
Contrairement à ce qu'Adam Matan et d'autres affirment que, vous peut en fait de créer un seul fichier binaire exécutable fichier à l'aide de Cython, à partir d'un pur Python (.py) fichier.
Oui, Cython est destiné à être utilisé comme indiqué - comme un moyen de simplifier l'écriture de C/C++, des modules d'extension pour le Disponible exécution python.
Mais, comme nudzo fait allusion dans ce commentaire, vous pouvez utiliser le
--embed
interrupteur à l'invite de ligne de commande.Voici un très simple exemple. Je suis présenteront les pièces de ce à partir d'une Debian Sid poste de travail, à l'aide de python3 et cython3..
Assurez-vous d'avoir python-dev ou python3-dev paquets installés au préalable.
1) Créer un simple programme en Python appelé hello.py
2) Utilisation Cython pour compiler votre programme en python en C...
3) Utiliser GCC pour compiler bonjour.c dans un fichier exécutable appelé bonjour...
4) vous Vous retrouvez avec un fichier appelé bonjour ...
Dans ce cas, l'exécutable est liée dynamiquement Python 3.3 sur mon système Debian.
5) exécuter bonjour...
Comme vous pouvez le voir, en utilisant cette méthode, vous pouvez en principe utiliser Cython pour convertir votre pur Python applications en exécutable, code objet compilé.
Je suis en utilisant cette méthode pour améliorer considérablement les applications les plus complexes - par exemple, en une véritable Python/PySide/application Qt.
Pour les différentes versions de Python, vous adaptez la gcc
-I
et-l
commutateurs de fonction.Vous pouvez alors le paquet de l'exécutable de distribution (.deb, etc.) fichier, sans avoir à le package Python/PySide/Qt fichiers - l'avantage étant que votre application doit toujours être en mesure de fonctionner même après une distribution de mise à jour de la même version de Python, etc. sur cette distribution.
Python header needed to compile C extensions, please install development version of Python
cython --embed -o /tmp/a.c a.py
etgcc -Os -I /usr/include/python2.7 -o /tmp/a/tmp/a.c -lpython2.7 -lpthread -lm -lutil -ldl
Prendre un regard sur les réponses à Peut Cython compiler un fichier EXE? qui, contrairement à toutes les autres réponses ici de dire que, oui, il est possible de compiler un exécutable.
Les liens au L'Incorporation De Cython semble être un bon endroit pour commencer, mais ce n'est pas Cython, le premier objectif donc je ne sais pas comment simple serait.
Je ne sais pas si cela va aider ou pas, mais Nudzo est correct. Vous pouvez l'obtenir avec
cython --embed -o main.o main.py
et puis j'essaie de compiler le résultat avec la cl/EHscVous ne pouvez pas, Cython est pas fait pour compiler Python, ni de le transformer en un fichier exécutable.
Pour produire une .exe fichier, utilisez py2exe.
À produire un ensemble pour Mac ou Linux, utilisez le regulard système de conditionnement de processus comme il n'y a rien de spécifique au sujet d'un langage de script programme Unix env.
cython --embed
qui peut produire des exécutables avec intègrent Python.