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

PyQt Python Discussion :

Créer un exécutable Windows python3-pyqt5-sqlite3 (si possible cross-plateforme Linux -> Windows, wine ou pas)


Sujet :

PyQt Python

  1. #1
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut Créer un exécutable Windows python3-pyqt5-sqlite3 (si possible cross-plateforme Linux -> Windows, wine ou pas)
    Bonjour,

    J'ai une appli PyQt/SQLite avec pyqt 5 et python 3 qui fonctionne sur Ubuntu.
    Je voudrais la compiler pour Windows pour la montrer à mes supérieurs.
    Comment faire?

    J'ai passé un sacré temps sur Wine, avec pyinstaller d'abord et py2exe ensuite. J'ai réussi à compiler sur Linux un hello world à lire sur Windows, avec python 2.6 . Mais je suis perdu quant à installer python 3 sur wine...

    Est-ce que c'est plus simple de packager l'exécutable sur Windows directement? Toute piste au stade où j'en suis est bonne à suivre!

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La fabrication d'un exécutable pour Windows nécessite d'être fait sous Windows, puisque les bibliothèques ne sont pas les mêmes que sous Linux.

    A noter que ce n'est pas de la "compilation" en code natif (comme en C), mais plutôt un assemblage exécutable du programme (compilé en bytes-code) avec l'interpréteur Python et les bibliothèques nécessaires.

    Je fais des exécutables sous Windows avec cx_freeze (que je préfère à py2exe) et des programmes graphiques assez gros PyQt5 avec SQlite (et autres), et ça marche très bien! J'aime bien cx_freeze parce qu'il est multiplateforme, mais je n'ai jamais essayé avec Linux+Wine pour Windows, et je ne sais pas si c'est possible.

    A noter que le setup pour cx_freeze doit pouvoir recopier le plugin de SQlite pour que PyQt5 le trouve à l'exécution. Idem pour les fichiers de traduction si on veut que les boîtes de messages parlent en français.

    Tu peux regarder mon tuto ici: http://python.jpvweb.com/mesrecettes..._pyqt4_windows. C'est écrit pour PyQt4, mais il y a peu de choses à changer pour PyQt5.

    Ma conclusion: ça marchera si tu trouves un PC Windows. Avec Linux+Wine, je ne sais pas.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Autre solution pour windows aussi : Utiliser InnoSetup.
    C'est assez simple d'utilisation, hautement configurable, utilisable avec une multitude de langage, scriptable

    Il est possible d'ajouter le programme dans le path, choisir la méthode de compression du setup,
    gérer les actions à faire pour l'installation mais aussi pour la désinstallation
    Par exemple pour installer tel ou tel fichier en fonction de la version de windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Source: "..\Sources\Flasher\Exe\Flasher\MSCOMM32.ocx"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver; Check: not isWindowsSeven()
    Source: "..\Sources\Flasher\Exe\Flasher\comdlg32.ocx"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver; Check: not isWindowsSeven()

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour IPreferCSharp,

    J'ai déjà utilisé Innosetup (http://www.jrsoftware.org/isinfo.php), mais APRES traitement par cx_freeze. Il est vrai qu'avec Innosetup, on peut diffuser un programme écrit en Python, qui s'installera et se désinstallera comme n'importe quel autre programme. En fait, les utilisateurs se sauront même pas que c'est écrit en Python...

    Mais y a-t-il une possibilité d'utiliser Innosetup en remplacement de cx_freeze?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    J'aurai tendance à dire oui,
    Personnellement je n'utilise que ça.


    Cependant, il faut travailler avec des virtualenv ou vider sois-même la distrib python si on veux pas tout embarquer ou encore rajouter des règles dans la section files afin de choisir ce que l'on embarque (pas comme dans le code que j'ai posté).

    Je lance mon soft a partir d'un .bat

    Un petit sample d'un script innosetup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    [Languages]
    Name: "en_US"; MessagesFile: "compiler:Default.isl"
    Name: "fr_FR"; MessagesFile: "compiler:Languages\French.isl";
    Name: "it_IT"; MessagesFile: "compiler:Languages\italian.isl";
    Name: "tr_TR"; MessagesFile: "compiler:Languages\Turkish.isl";
     
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; 
     
    [Files]
    Source: "../License.rtf"; DestDir: "{app}"; Flags: ignoreversion
    Source: "launcher.bat"; DestDir: "{app}"; Flags: ignoreversion
    Source: "../icons/logo.ico"; DestDir: "{app}"; Flags: ignoreversion
    Source: "../icons/logo_256.ico"; DestDir: "{app}"; Flags: ignoreversion
    Source: "../api_files.zip"; DestDir: "{app}"; Flags: ignoreversion       
    Source: "../src/*.*"; DestDir: "{app}\eo_testing"; Flags: ignoreversion recursesubdirs; Excludes: ".idea"
    Source: "../venv/Python35/*.*"; DestDir: "{app}/py_venv/"; Flags: ignoreversion recursesubdirs
     
    [Icons]
    Name: "{group}\{#MyAppName}-{#MyAppVersion}-{#MyAppMode}"; Filename: "{app}\{#MyAppExeName}";IconFilename: "{app}\logo_256.ico"; Flags:runminimized;
    Name: "{commondesktop}\{#MyAppName}-{#MyAppVersion}-{#MyAppMode}"; Filename: "{app}\{#MyAppExeName}";IconFilename: "{app}\logo_256.ico"; Flags:runminimized; Tasks: desktopicon
     
    [Run]
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: shellexec postinstall skipifsilent runminimized

  6. #6
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Merci pour vos réponses et les super ressources, je vais creuser les options cx_freeze et innosetup.

    Des conseils pour installer python 3 sur wine d'un autre côté? Wine 2.4 et winetricks ne proposent que python27 max je crois. Je vais certainement faire le paquetage sur Windows cette fois, mais la possibilité de le faire depuis Linux est très tentante.

  7. #7
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Une heure de boulot avec cx_freeze et c'est bon! Merci encore
    Pas mal d'options dans setup.py m'ont posé problème, notamment quasi-tous les arguments de setup() mal passés à __init__. Mais ça fonctionne.
    Tenterai demain innosetup pour un one file.

    Rest à trouver sinon comment installer python3 dans wine ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/01/2016, 00h39
  2. Réponses: 7
    Dernier message: 18/04/2012, 23h09
  3. Créer un exécutable Windows avec py2exe pour PYQt
    Par nerazuri85 dans le forum Py2exe
    Réponses: 5
    Dernier message: 07/08/2008, 21h59
  4. Créer un service Windows (pour exécuter une application)
    Par drinkmilk dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 16/08/2007, 11h24

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