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

 C Discussion :

compilation de python en C et Plugin


Sujet :

C

  1. #1
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 311
    Points : 202
    Points
    202
    Par défaut compilation de python en C et Plugin
    Bonjour,

    Je voudrais en premier lieu préciser que je ne connais absolument rien en C. Excusez moi si je dis d'énormes bêtises.

    J'ai développé un programme, pour mon entreprise, en Python 3.11 et PySide6. Ce application est constitué d'un "corps" principal et de trois plugins qui sont utilisés en fonction du travail des salariés.

    Cette année, j'ai décidé de distribuer mon appli à partir de la bibliothèque "Nuitka" qui compile le Python en C.
    Je me retrouve donc avec un répertoire avec un .exe et des fichiers C.

    Voici ma question :
    Les plugins, qui sont des fichiers python, faut-il que je les compile aussi pour qu'ils soient utilisés par le programme principal ?
    Personnellement, je ne vois pas l’Intérêt d'avoir un nouveau, ou plusieurs, autres exe.

    Bref, je suis complètement perdu.
    Pourriez vous me dire ce que je devrais faire de mes plugins et s'ils seront bien appelés par le programme principal.

    En vous remerciant par avance.
    Bonne journée
    Douter de tout, toujours, et surtout de soi-même...

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Déjà un avis purement personnel: quand je veux distribuer une appli Python, je ne la mets pas en C, je passe par pyinstaller qui me génère un runtime Python et tous les modules sont intégrés (même PySide)
    Faire passer Python en C se justifie par exemple si on a besoin d'augmenter les performances du programme. Et dans ce cas alors je conseillerais d'identifier les points "lourds" et soit d'utiliser une techno dédiée pour ces points particuliers (par exemple mon premier projet fait entièrement en Python mettait 4mn pour sortir un résultat mais quand j'ai déporté les calculs dans une lib dédiée il ne mettait plus que 30 secondes), soit de passer par Python/C via ctypes. Mais tout mettre en C...

    Ensuite à la question "est-ce que les plugins sont intégrés au programme généré" la meilleure façon de le savoir est de placer ton programme généré dans un environnement vierge et voir s'il tourne complètement. Si Nuitka a été bien fait (je ne le connais pas mais je pense qu'il doit certainement l'être) il doit être capable de détecter qu'il y a des plugins associés et les intégrer directement avant compilation. En tout cas, pyinstaller le fait (j'ai testé sur un projet contenant une version PyQt5, une autre PyQt6 et une 3° PySide6, et chaque fois que je branchais le bon module le runtime généré le récupérait parfaitement).

    [edit] je viens de tester nuitka. Il y a du bon et du moins bon.
    Le bon c'est que ça marche
    J'ai un projet avec 3 libs
    • une lib nommée "libIHM" pour l'IHM => Qt5/Qt6 ou PySide6 selon mon choix
    • une lib nommée "libCore" pour les calculs
    • une lib "libOutils" qui contient des outils divers

    Chaque lib est un dossier avec parfois des sous-dossiers (exemple libIHM contient 3 sous-dossiers pour chaque version d'IHM).
    Il m'a suffit de préciser le dossier de chaque lib en lançant nuitka3 => nuitka3 --include-package=libIHM --include-package=libOutils --include-package=libCore prog.py pour que les libs soient intégrées dans l'exécutable généré et celui-ci fonctionne.
    Ce qui est moins bon c'est que je l'ai ensuite transféré sur une slaxware (linux live-dvd donc vierge) et que là ça n'a pas fonctionné (une histoire de module "encodings" qui manque). J'ai vu ce même message chez d'autres utilisateurs sur le net mais je n'ai pas réussi à le régler sur la slax. C'est probablement des trucs à installer mais s'il faut que tout Python soit installé chez les clients que tu "distribues" autant leur distribuer le code source originel. Ou alors revenir à pyinstaller, plus fait pour la distribution que nutkia, probabement, lui, dédié à l'optimisation.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    PySide6 fournit pyside6-deploy pour packager une application et la distribuer facilement. Il wrappe Nuitka justement. Je pense que tu devrais passer par cet outil directement. => https://doc.qt.io/qtforpython-6/depl...e6-deploy.html

    Ces plugins peuvent être un peu touchy à gérer a priori. Comment les utilisateurs font-il actuellement pour rajouter ou enlever un plugin ? Je suppose qu'un plugin est mieux représenter par un .so ou un .dll qu'un .exe.

Discussions similaires

  1. Installation de wxPython apres compilation de Python
    Par gilles06 dans le forum wxPython
    Réponses: 1
    Dernier message: 26/02/2014, 16h07
  2. Compiler du Python en Java par Jython
    Par Alisterr dans le forum Autres
    Réponses: 0
    Dernier message: 26/11/2012, 13h01
  3. Schéma de compilation de python
    Par hervino dans le forum Général Python
    Réponses: 3
    Dernier message: 17/05/2011, 00h43
  4. compilation sous python
    Par velight dans le forum Déploiement/Installation
    Réponses: 5
    Dernier message: 09/03/2009, 18h19
  5. Compilé du python ?
    Par jobe dans le forum Déploiement/Installation
    Réponses: 4
    Dernier message: 13/08/2007, 11h18

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