IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Compiler avec Cython - plusieurs fichiers


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Compiler avec Cython - plusieurs fichiers
    Bonjour à tous.
    Je recherche depuis un moment un moyen de compiler mes codes Python avec Cython pour les distribuer sans dépendances. Alors il y a cx_Freeze qui marche assez bien, mais il ne fonctionne pas dans mon projet actuel et ne permet pas de gain de performances (pas compiler, ça embarque juste l'interpréteur).
    J'ai réussi à compiler un fichier python avec Microsoft Visual Studio C++ et je me suis fait une sorte de protocole :
    Compilation (cython) avec Microsoft Visual Studio C++ :

    1 - Compiler votre programme *.py (celui qu'il faut lancer en premier) avec cython.
    (cmd : C:\Python32\python.exe C:\Python32\Scripts\cython.py main.py --embed -o main.c
    --embed pour avoir un point d'entrée main(), et donc avoir un programme fonctionnant sans dépendances.)

    2 - Lancer Visual Studio C++, créer un nouveau projet, mettre votre fichier .c créé à partir de cython.

    3 - Ajouter le dossier /Pythonxx/include/ dans
    -- propriété > Propriétés de configuration > C/C++ > Général > Autres répertoires include.
    Il s'agit d'indiquer où trouver les .h (headers) de l'interpreteur Python.

    4 - Ajouter les dossiers /Pythonxx/Lib/ et /Pythonxx/libs/ dans
    -- propriété > Propriétés de configuration > Editeur de liens > Répertoires de blibliothèques supplémentaires

    5 - Lancer la compilation (vérifiez que vous compiler en 32 bits pour un programme 32 bits, avec Python 32 bits, et vos modules 32 bits,
    ou 64 bits si vous voulez un programme 64 bits, et que vous avez Python 64 bits avec les modules en 64 bits.)

    6 - Un terminal s'ouvrira puis se refermera si vous avez besoin de ressources externes comme d'autres fichiers *.py (ou *.pyd compilés
    avec Cython pour bénéficier de la rapiditée accrue !), images, sons, autre...

    7 - Placer ces éléments dans le répertoire où se trouve votre .exe (mais laissez bien sûr les fichiers
    dans leurs dossier s'ils sont dans un dossier).

    8 - Lancer votre executable.
    Je suis arrivé à avoir donc un exécutable qui fonctionne. Le soucis, c'est que mon programme s'étend dans plusieurs fichiers, et Cython ne les récupère pas automatiquement (j'ai placés ces fichiers quand même .py, et ça marche, sauf qu'il faut avoir installé Python, donc l'intérêt tombe à l'eau, surtout que ça change rien niveau perfs).
    Donc j'aimerai savoir si vous aviez une solution pour compiler ces fichiers aussi, de manière à qu'ils soient indépendants.
    Les mettre en .pyd (ou .pxd) ? Si oui, comment fait-on avec Cython ? (même avec la documentation officielle, je comprends pas exactement comment ça se passe)
    Si je n'ai pas énoncé avec assez de précisions, n'hésitez pas à m'en demander davantage !

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 907
    Points : 7 274
    Points
    7 274
    Par défaut
    Pour avoir utilisé cython un moment je te passe le tutoriel avec lequel j'ai appris.

    Pour bien apprendre Python suis ces tutoriels et cours de formation Python : http://python.developpez.com/cours/
    Le meilleur livre Python : Apprendre à programmer avec Python 3 par Gérard Swinnen http://python.developpez.com/cours/apprendre-python3/

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Oui, j'ai aussi utilisé ce tutoriel !
    Effectivement, il y a une partie de ce que je veux.
    voilà donc un fichier hello.so qui est une extension python que nous pouvons utiliser
    Mais la ligne de commande qui va avec permet de compiler sous linux, et en tout cas Fedora, alors que moi je veux compiler sous Windows, et il y a des choses dont je n'ai aucune idée de comment traduire pour que cela soit compilé sous Windows
    J'ai le gcc de Code::blocks, CodeLite, et j'ai aussi Microsoft Visual Studio C++.
    Et je pense que sous Windows ça sera pas un .so non ?

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 907
    Points : 7 274
    Points
    7 274
    Par défaut
    Effectivement j'ai linux et [troll]quel confort!!![/troll]

    Utilises-tu mingW? Si oui n'y a-t-il pas une console linux accessible? Je ne connais pas windows et mingW, donc c'est une question vraiment ouverte.

    Je connais aussi un posteur sur un autre forum ayant eu des problèmes avec cython et windows, donc bon courage, car à cette heure ci son problème n'est toujours pas résolu.

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Oh oui, moi aussi je préfère Linux niveau confort

    Utilises-tu mingW? Si oui n'y a-t-il pas une console linux accessible? Je ne connais pas windows et mingW, donc c'est une question vraiment ouverte.
    Bonne question, je ne sais pas, mais oui il s'agit de mingW, je regarderai (là je viens de monter mon nouveau PC dans l'après midi, donc faut que je réinstalle un peu tout).

    Je connais aussi un posteur sur un autre forum ayant eu des problèmes avec cython et windows, donc bon courage, car à cette heure ci son problème n'est toujours pas résolu.
    Ah ah, on va s'amuser ! Enfin bon, pour résumer, le problème c'est qu'il faut réussir à faire une bibliothèque du fichier comme dit dans le tutoriel (.so, sauf que sous Windows ça sera pas un .so), donc trouver une autre ligne de commande. A voir si on peut pas faire pareil via un fichier setup.py, là ça sera réglé, pareil pour tout le monde !

  6. #6
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut Avec pyinstaller 2
    Bonjour,
    Cela ne concerne pas les gains de performance, mais pour ''distribuer sans dépendances'' tes applics tu pourrais essayer pyinstaller2.
    J'ai fait un post spécifique :
    http://www.developpez.net/forums/d12...laris-and-aix/
    Alex

Discussions similaires

  1. Compiler module avec plusieurs fichiers
    Par j0o0 dans le forum Linux
    Réponses: 3
    Dernier message: 12/04/2010, 20h39
  2. [XSD] Validation une instance XML avec schéma(plusieurs fichiers XSD)
    Par ttttnht dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 07/09/2009, 15h16
  3. Compiler un petit programme avec plusieurs fichiers avec g++
    Par Ourcoulouncoulou dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/12/2008, 13h48
  4. [Compiler] Compiler une application avec plusieurs fichiers m
    Par ploukinet dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/05/2007, 17h34
  5. compilation projet ( en plusieur fichier )
    Par damien77 dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 21/02/2007, 23h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo