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

Déploiement/Installation Python Discussion :

Compiler un 32 bits sous un 64 bits


Sujet :

Déploiement/Installation Python

  1. #1
    Invité
    Invité(e)
    Par défaut Compiler un 32 bits sous un 64 bits
    Bonjour,
    j'ai un programme que j'aimerais rendre disponible sur plusieurs postes.
    je compile avec cx_freeze sous un os 64bits et tout fonctionne bien... uniquement lorsque je fonctionne avec un système 64bits.

    y a-t-il un moyen de compiler sous un 64bits un programe destiné à un 32bits?

    le setup que j'utilise est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import sys
    from cx_Freeze import setup, Executable
     
    build_exe_options = {"packages": ["os","numpy"], "excludes": ["tkinter"]}
     
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"
     
    setup(  name = "test",
            version = "0.1",
            description = "My GUI application!",
            options = {"build_exe": build_exe_options},
            executables = [Executable("mon_programme.py", base=base)])
    est-ce qu'il suffit de remplacer le if sys.platform == "win32": par "win64"?

    merci pour vos conseils :-)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    cx_freeze ne compile rien, il fait juste un répertoire contenant les bibliothèques partagées, python et un fichier zip contenant les différents scripts.
    Exécutable et bibliothèques 64 bits ne pourront pas s'exécuter sur un système 32 bits.... mais rien ne vous empêche d'installer les moutures 32 bits de python, cx_freeze,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    merci pour la précision concernant la "compilation"!
    donc j'ai désinstallé mon python pour réinstaller python 3.5 32bits et j'ai ajouté les bibliothèques dont j'avais besoin (via pip).
    mais quand je copie/colle le "build" généré sur un système 32 bits, et bien cela ne fonctionne toujours pas... windows me dit que ce n'est pas une application 32 bits valide

    est-il possible que pip installe des bibliothèques 64 bits sur un python 32 bits? parce que je travaille sur un os 64bits mais la destination finale du programme est un 32 bits).
    y a t-il u moyen de vérifier la compatibilité des biblios installées/utilisées? J'utilise "pip freeze" pour savoir quelles versions de biblios sont installées mais cela ne me renseigne pas si elles sont destinées à des 32 ou 64 bits.
    y a t-il une opération à faire dans le setup pour "forcer" l'utilisation des biblios 32 bits malgré l'éventuelle disponibilité de bibliothèque 64 bits?

    merci!

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Citation Envoyé par dd-64 Voir le message
    y a t-il une opération à faire dans le setup pour "forcer" l'utilisation des biblios 32 bits malgré l'éventuelle disponibilité de bibliothèque 64 bits?
    Si çà ne fonctionne pas, vous pouvez toujours fabriquer çà sur un Windows 32 bits (que vous devez avoir quelque part ne serait ce que pour tester un peu...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    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,

    Sous Windows 64bits, j'utilise toujours Python 32 bits ainsi que cx_freeze, et ça marche bien.

    Une question: est-ce un programme graphique ou un programme destiné à la console?
    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

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    et bien c'est un peu délicat pour moi de générer le .exe directement sur un 32bits parce que j'en ai pas chez moi et que c'est destiné à mon travail (et à mon travail, j'ai le droit de copier des données mais pas d'installer quoi que ce soit...).

    mais bon, j'avance un peu, je tourne actuellement sous python 3.4 et cx_freeze le tout en version 32 bits. les biblios je les ai installés avec des whl ou des *.msi et pour chaune j'ai bien fait attention à choisir la version 32bits et compatible avec python 3.4 windows.

    Actuellement, après avoir eu des générations de *.exe qui m'indiquaient que ce n'était pas un win32 valide, maintenant j'ai un *.exe qui ne me dit plus rien... et qui ne lance rien... je vois bien que ça cogite un peu après mon double clics... mais rien derrière

    mon application est une fenêtre graphique avec photos, boutons... et même des vidéos!
    le tout fonctionne très bien quand je fais un run à partir du code lui même (et c'est bien grâce à ce forum si le tout marche )

    ci dessous, une partie du code (ou je n'ai laissé qu'un bouton, une image de fond et toutes les biblio que j'utilise dans le prog complet)
    avec le setup associé... (et même cette version simplifié me fait un *.exe qui ne dit rien et ne s'affiche pas).

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    from PyQt5 import QtCore
    from PyQt5.QtWidgets import QGraphicsScene,QMainWindow,QFileDialog,QMessageBox,QApplication,QActionGroup,QAction,QWidget,QGraphicsView,QLineEdit,QCheckBox,QComboBox,QPushButton,QLabel,QSlider,QVBoxLayout,QHBoxLayout,QGroupBox,QRadioButton,QGridLayout
    from PyQt5.QtCore import Qt,QByteArray,QBuffer,QIODevice
    from PyQt5.QtGui import QPen,QFont,QColor,QIcon,QPixmap,QBrush
    from PyQt5.QtMultimedia import QCamera,QCameraImageCapture
    from PyQt5.QtMultimediaWidgets import QVideoWidget
    from datetime import datetime
    from PIL import ImageEnhance
    from PIL import Image
    from PIL.ImageQt import ImageQt
    from PIL import ImageFilter
    from io import BytesIO
    import os,sys,time,os.path
    from os.path import expanduser
    from numpy import sqrt
     
     
    class fenPrincipale(QMainWindow):
        def __init__(self):
            QMainWindow.__init__(self)
     
            fenetre_widget = QWidget()
            fenetre_widget.setStyleSheet("background-image: url(espace-lumiere-bleue.jpg)")
     
            self.bouton_play = QPushButton()
            self.bouton_play.setIcon(QIcon("play2.png"))
            self.bouton_play.setStyleSheet("QPushButton{background: transparent}")
            self.bouton_play.setIconSize(QtCore.QSize(70,70))
            self.bouton_play.setFixedWidth(70)
     
            layouthorizontal1 = QHBoxLayout()
            layouthorizontal1.addWidget(self.bouton_play)        
     
            #Intégration    
            fenetre_widget.setLayout(layouthorizontal1)        
            self.setCentralWidget(fenetre_widget)
     
    def main(args):
        appli=QApplication(args)
        fenetre=fenPrincipale()
        fenetre.show()
        r=appli.exec_()
        return r
     
    if __name__=="__main__":
        main(sys.argv)
    et le setup:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import sys
    from cx_Freeze import setup, Executable
     
    build_exe_options = {"packages": ["os","numpy"], "excludes": ["tkinter"]}
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"
     
    setup(  name = "test",
            version = "0.1",
            description = "My GUI application!",
            options = {"build_exe": build_exe_options},
            executables = [Executable("test.py", base=base)])
    Dernière modification par Invité ; 23/03/2017 à 07h45.

  7. #7
    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,

    C'est bien d'avoir mis un code simplifié utilisable, ça m'a permis d'essayer.

    J'ai dû corriger un peu le code pour qu'il fonctionne avec .py: commenter les lignes qui utilisent des images que je n'ai pas.

    Je n'ai pas touché au setup, et j'ai eu un problème après traitement par cx_freeze: l'erreur à l'exécution disait qu'il ne trouvait pas PyQt5.QtNetwork.

    Je me suis demandé où un programme aussi simple avait besoin de QtNetwork, et j'ai trouvé: c'est QtMultimedia! Voir ici: https://www.riverbankcomputing.com/p...er/036609.html.

    J'ai donc modifié le setup pour dire qu'on avait besoin du package "PyQt5.QtNetwork":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    build_exe_options = {"packages": ["os","numpy","PyQt5.QtNetwork"], "excludes": ["tkinter"]}
    et l'exe a fonctionné!

    C'est souvent le genre de problème qu'on a: cx_freeze fait des choses très compliquées, et il faut l'aider de temps en temps quand il ne trouve pas tout seul. Et pour ça, il faut regarder attentivement tous les messages d'erreur.
    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

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    merci pour la correction du setup!
    mais malgré ça, ça ne change rien de mon coté

    j'ai aussi basculé les lignes avec "photos" en commentaires (au ca où... pour voir).
    mais je reste avec un executable qui ne lance rien de visuel...

    j'ai essayé de virer toutes les biblios du petit bout de programme "test" pour ne laisser que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from PyQt5.QtWidgets import QPushButton,QHBoxLayout,QWidget,QMainWindow,QApplication
    import os,sys,time,os.path
    mais idem que précédemment, le .exe ne répond pas.

    les lignes d'erreurs à lire (suite à ce que fait cx_freeze), elles sont où?
    en mode console, je n'ai pas la totalité des informations disponible entre les deux moments où j'ai la main...

    NB: je lance le build via (une fois placé dans le répertoire Python34):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python.exe setup.py build
    Dernière modification par Invité ; 23/03/2017 à 13h52.

  9. #9
    Invité
    Invité(e)
    Par défaut
    et bien je crois avoir mis le doigt sur mon souci!
    quand je fais un pip freeze pyqt5 n'apparait pas installé...
    pourtant dans idle je l'importe sans pb...

    quand je demande à pip de l'installer, la console me répond:
    1-collecting pyqt5
    2-using cached PyQt5-xxxx.whl
    3-collecting sip>=4.19.1 (from pyqt5)
    4-could not find a version that satisfies the requirement sip>=4.19.1

    bon je sais pas ce qui a foiré à l'install... et le message je le comprent pas... j'arrive même pas à desinstaller ce qui pourtant est installé...

    du coup j'ai essayé avec python 3.6, avec un pip upgradé... verrai demain si ça marche sur mon ordi 32 bits!

Discussions similaires

  1. Compiler le plug-in Oracle 64 bit sous Windows 64 bit avec Qt 4.3
    Par mercure07 dans le forum Bases de données
    Réponses: 0
    Dernier message: 23/01/2014, 11h17
  2. CF10 32 bits sous Windows 64 bits ?
    Par PoY dans le forum Coldfusion
    Réponses: 1
    Dernier message: 29/10/2012, 10h11
  3. execution d'un prog 32 bits sous Windows 64 bits
    Par Trap D dans le forum Visual C++
    Réponses: 16
    Dernier message: 23/03/2012, 15h53
  4. Forcer l'utilisation de Java 32 bits sous Seven 64 bits
    Par Catsy dans le forum Général Java
    Réponses: 2
    Dernier message: 05/11/2011, 13h32
  5. Compilation de librairies 32 bits sous Ubuntu 64 bits
    Par cgigot dans le forum Eclipse C & C++
    Réponses: 1
    Dernier message: 12/02/2009, 11h33

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