Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre du Club
    Inscrit en
    février 2011
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 297
    Points : 58
    Points
    58

    Par défaut PyInstaller sous lunix

    Bonjour
    juste une petite question , est ce qu'il existe un logiciel qui génère un exécutable du code source python qui fonction à la fois sous Windows que sous lunix

    j'ai installer pyinstaller sous windows et j'arrive à générer l’exécutable de mon code python mais le problème que cet exécutable est d’extension .exe donc il fonctionne seulement sous Windows pas sous Lunix
    merci

  2. #2
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 832
    Points : 2 531
    Points
    2 531

    Par défaut

    Sous Linux, tu ne dois pas nécessairement installer un programme Python dans le sens Windows du terme.

    L'utilisateur copie simplement les fichiers du programme dans son répertoire personnel et peut directement lancer le script principal de l'appli.

    Évidement, une installation dans le dossier /usr selon les règles afin que tous les utilisateurs puissent utiliser le programme est préférable et surtout si il y a des dépendances à prévoir, des bibliothèques tierces par exemple ou encore pour avoir une entrée dans le menu des applications.

    Ceci, cependant, se fait par le biais de paquetages dont la forme et par conséquent la construction, varient selon la distribution. Deban, OpenSuze, Archlinux etc.

    Donc, en gros, tu peux directement tester sous Linux un programme Python sans l'installer, ni créer d'exe d'aucune forme, et garder la question d'une instal pour plus tard.

    Je ne dis pas que ton programme fonctionnera d'office sous Linux, faudra sans doute quelques ajustements.


    ...

    Tout ceci est valable aussi pour Lunix.
    Vincent
    Oqapy . Qarte . PaQager

  3. #3
    Membre confirmé
    Homme Profil pro Christian Havard
    Développeur informatique
    Inscrit en
    mai 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Christian Havard
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2011
    Messages : 147
    Points : 221
    Points
    221

    Par défaut cx_freeze, mais...

    Salut,

    Entièrement d'accord avec Vins, sous Linux, il n'y a pas vraiment de raison
    de "geler" le code python pour le rendre exécutable.

    Cela dit, il y quand même moyen de le faire via cx_Freeze. Si le script
    de "compilation" peut être commun avec celui utilisé par la version windows,
    le résultat n'est en aucun casinterchangeable. Sauf, évidement, à faire tourner l'exe dans un Wine (je ne l'ai personnellement jamais testé)

    Encore une fois, il vaut mieux, quand c'est possible, distribuer ton programme
    en mode source (du moins sous Linux). Sous Windows, et dans un réseau d'entreprise, il peu par contre être judicieux de protéger un programme contre
    les modifications des petits malins... (Sans connotation péjorative).

    A bientôt

  4. #4
    Expert Confirmé
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 273
    Points : 3 755
    Points
    3 755

    Par défaut

    Bonjour,

    Comme je travaille essentiellement en multiplateforme (au moins Windows-Linux), j'utilise cx_freeze. Et avec cx-freeze, j'utilise la méthode avec "setup.py", et je fais en sorte que le même setup.py puisse être utilisé sans modification sous Windows et Linux.

    Sous Windows, après avoir utilisé cx_freeze, je crée une version installable avec "Inno setup". J'obtiens alors un seul fichier .exe que je peux transmettre, et qui s'installe/désinstalle facilement comme n'importe quel logiciel Windows.

    Sous Linux, je ne sais pas créer de "paquet" .rpm, .deb (mais j'aimerais bien y arriver un jour...), et je me suis donc limité à la version exécutable à recopier quelque part.

    Pour obtenir cette version exécutable avec cx_freeze sous Linux, je m'étais donné comme objectif de pouvoir l'exécuter sur un autre linux "brut d'installation", c'est à dire qui n'a pas les bibliothèques nécessaires comme PyQt4, voire qui n'a pas la bonne version de Python pré-installée. Et ça, ça n'a pas été facile, parce que l'intégration de certaines bibliothèques nécessite une instruction de cx_freeze qui n'existe que dans une version récente: il faut donc compiler un cx_freeze récent au lieu d'installer celui prévu!

    Avec ça, j'ai pu vérifier qu'un gros programme PyQt4 (10000 lignes de code), ainsi rendu exécutable sous Ubuntu avec cx_freeze, fonctionnait parfaitement sur un Ubuntu "brut d'installation" (donc sans PyQt4).

    Bref, tout ça marche très bien, et mes petites expériences sur le sujet se trouvent ici:

    http://pyqt.developpez.com/tutoriels...pyqt4/windows/

    http://pyqt.developpez.com/tutoriels...e-pyqt4/linux/

    Ainsi, bien sûr, que sur mon site: http://python.jpvweb.com/mesrecettespython/
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre du Club
    Inscrit en
    février 2011
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 297
    Points : 58
    Points
    58

    Par défaut

    je viens de tester les étapes decrites par votre lien
    l'archive de cx_Freeze je les desarchivé sur le Bureau .
    quand je fais
    Code :
     sudo python setup.py install
    j'ai plein d'erreur

    Code :
    1
    2
    3
    4
    5
    6
    7
    source/util.c:6:20: error: Python.h: Aucun fichier ou dossier de ce type
    source/util.c:405: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
    source/util.c:419: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_ModuleMethods’
    source/util.c:456: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
    source/util.c: In function ‘initutil’:
    source/util.c:490: warning: implicit declaration of function ‘Module_Initialize’
    error: command 'gcc' failed with exit status 1

  6. #6
    Membre du Club
    Inscrit en
    février 2011
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 297
    Points : 58
    Points
    58

    Par défaut

    le dossier desarchivé je dois le placer ou exactement dans mon repertoire de projet
    car là j'ai une erreur quand je lance la commande l'erreur est :
    Code :
    1
    2
    3
    4
    raceback (most recent call last):
      File "setup.py", line 7, in <module>
        from cx_Freeze import setup, Executable
    ImportError: No module named cx_Freeze

  7. #7
    Membre du Club
    Inscrit en
    février 2011
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 297
    Points : 58
    Points
    58

    Par défaut

    dans mon fihcier setup.py crée j'ai rajouté cette ligne
    Code :
    from cx_Freeze-4.2.2.cx_Freeze import setup, Executable
    car mon fichier cx_Freeze se trouve dans le repertoire cx_Freeze-4.2.2
    mais j'ai toujours une erreur
    Code :
    1
    2
    3
    4
    5
    python setup.py build
      File "setup.py", line 7
        from cx_Freeze-4.2.2.cx_Freeze import setup, Executable
                      ^
    SyntaxError: invalid syntax

  8. #8
    Expert Confirmé
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 273
    Points : 3 755
    Points
    3 755

    Par défaut

    Bonjour,

    Tu mélanges les étapes!

    1- installation de cx_freeze par compilation

    Comme c'est marqué dans mon tuto, tu te places dans le répertoire cx_Freeze-4.2.2 qui ne contient que les sources désarchivées de cx_Freeze. Cela n'a rien à voir pour l'instant avec ton projet, ni même avec PyQt4, et le "setup.py" de ce répertoire n'est pas le même que le "setup.py" de ton projet.

    Pour que ça marche, tu dois avoir déjà installé python-dev.

    Après avoir exécuté les 2 lignes de code et si pas d'erreur, cx_Freeze est installé. Pour le vérifier, tu lances idle (par exemple), et tu fais: "import cx_Freeze". Si ça donne une erreur, cx_Freeze n'est pas correctement installé.

    2- après, et après seulement, tu peux continuer ton projet, et dans ce cas, tu te places avec une console dans le répertoire de ton projet, celui qui contient le setup.py que tu as édité et qui va utiliser le cx_Freeze installé précédemment.

    Quand ça ne marche pas, tu gagnerais du temps à relire le tuto...
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Membre éclairé Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 697
    Points : 399
    Points
    399

    Par défaut

    C'est bizarre moi j'utilise Pyinstaller Sous Linux pour compiler...
    Tu peut télécharger le *.tar ici http://www.pyinstaller.org/
    Mais je crois etre hors sujet.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Blog: http://3dcyberspace.unblog.fr/
    Site: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •