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

Python Discussion :

Erreur Pyinstaller & module complementaire [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut Erreur Pyinstaller & module complementaire
    Bonjour,
    J'ai un code python qui me permet de pousser des fichiers sur mon sharepoint.
    Il fonctionne correctement sous mon environnement VS + mini conda.
    Quand j'ai passé mon code en .exe je n'arrive plus a l’exécuter, j'ai l'erreur suivante : "Failed to execute script main"
    J'ai mis des logs un peu partout pour voir d'ou vient l'erreur
    l'erreur vient de ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     from sharepoint import SharePoint
    le sharepoint.py en question contient ce code

    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
    47
    48
    49
    50
    51
    52
    53
    54
    from shareplum import Site, Office365
    from shareplum.site import Version
    import json, os
     
    ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
    config_path = '\\'.join([ROOT_DIR, 'config.json'])
     
    # read config file
    with open(config_path) as config_file:
        config = json.load(config_file)
        config = config['share_point']
     
     
        USERNAME = config[0]['user']
        PASSWORD = config[0]['password']
        SHAREPOINT_URL = config[0]['url']
        SHAREPOINT_SITE = config[0]['site']
        SHAREPOINT_DOC = config[0]['doc_library']
     
    class SharePoint:
        def auth(self):
            self.authcookie = Office365(SHAREPOINT_URL, username=USERNAME, password=PASSWORD).GetCookies()
            self.site = Site(SHAREPOINT_SITE, version=Version.v365, authcookie=self.authcookie)
     
            return self.site
     
        def connect_folder(self, folder_name):
            self.auth_site = self.auth()
     
            self.sharepoint_dir = '/'.join([SHAREPOINT_DOC, folder_name])
            self.folder = self.auth_site.Folder(self.sharepoint_dir)
     
            return self.folder
     
        def upload_file(self, file, file_name, folder_name):
            State = False
            self._folder = self.connect_folder(folder_name)
     
            with open(file, mode='rb') as file_obj:
                file_content = file_obj.read()
     
            self._folder.upload_file(file_content, file_name)
            allfiles = self._folder.files
            for file in allfiles:
                if file['Name'] == file_name:
                    State = True
                    return State
            return State
     
        def delete_file(self, file_name, folder_name):
     
            self._folder = self.connect_folder(folder_name)
     
            self._folder.delete_file(file_name)
    Ma commande pyinstaller est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pyinstaller --onefile --windowed main.py
    j'ai essayé sans --onefile mais le resultat est le meme.

    MOn fichier setup.py

    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 setuptools
    from setuptools import setup
     
    setup(name="relink",
          version="0.0.1",
          description="A client for https://rel.ink/ API",
          author="Anonyme",
          author_email="anonyme",
          packages=setuptools.find_packages(exclude=['test']),
          install_requires=['pysftp','shareplum'],
          extras_require={
                "dev": ["requests-mock"],
          },
          license="Apache 2.0")

    je sèche un peu ! Une idée ?
    Je pense que cela vient de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
    config_path = '\\'.join([ROOT_DIR, 'config.json'])
    Mais je n'arrive pas a corriger

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par loic3484 Voir le message
    Mais je n'arrive pas a corriger
    La documentation de PyInstaller explique comment ajouter des fichiers de données au package et comment y accéder depuis le programme.

    Il suffit d'essayer de faire tel que documenté plutôt qu'essayer d'inventer...

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut
    Bonjour,

    Merci pour votre réponse en effet j'ai déjà lu ces deux documents,

    Ce que je ne comprend pas :

    1) mon problème vient du fait que je fait appel à un fichier config dans mon code sharepoint.py ?
    2)Il faut donc que j'ajoute : Using Data Files from a Module
    3)Que je modifie la manière d'y accéder dans mon code python ?

    Exact ?

    Rien a voir avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from sharepoint import SharePoint
    , c'est pas ce lien la qui pose problème ?

    Je m'excuse, j'ai relu plusieurs fois la doc, et je ne comprend pas ...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par loic3484 Voir le message
    2)Il faut donc que j'ajoute : Using Data Files from a Module
    3)Que je modifie la manière d'y accéder dans mon code python ?
    Il faut bien ajouter le fichier de données à l'arborescence du package. Puis comme la hiérarchie de répertoires est différente, appliquer ce qu'il faut pour le retrouver.

    Citation Envoyé par loic3484 Voir le message
    Je m'excuse, j'ai relu plusieurs fois la doc, et je ne comprend pas ...
    Il faut apprendre à lire une documentation. C'est un apprentissage "actif" ou on va commencer par ecrire un code qui fait un truc qui ouvre un fichier comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print(__file__)
    f = open('toto.dat')
    print(f.read())
    pour voir ce qu'il se passe et voir comment les différentes solutions s'appliquent.

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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut Le retour du lundi Matin
    Bonjour,

    J'ai modifié mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'config.json'))
    J'ai rajoute ceci dans ma commande Pyinstaller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --add-data src/config.json;.
    Cela ne fonctionne toujours pas,

    j'ai enlevé l'option windowed et je l'ai lancé depuis une commande pour voir le message d'erreur,

    L'erreur ne vient pas du fichier config introuvable, mais plutôt du chargement du module shareplum

    Nom : Capture.PNG
Affichages : 98
Taille : 14,1 Ko


    En vous remerciant,

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par loic3484 Voir le message
    L'erreur ne vient pas du fichier config introuvable, mais plutôt du chargement du module shareplum
    L'erreur vient de ce que vous voulez bien rapporter (comme erreur).
    Et on est toujours dans la logique, que faire lorsque pyinstaller n'a pas fait automatiquement quelque chose.

    Ici il semble s'agir de l'inclusion d'une bibliothèque, et on regarde ce que raconte la documentation ou la FAQ de pyinstaller... et on essaie de résoudre le soucis sur un petit exemple genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from sharepoint import SharePoint
    print('done')
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/06/2007, 16h38
  2. message erreur sur appel module
    Par Daniel MOREAU dans le forum Access
    Réponses: 10
    Dernier message: 15/02/2007, 16h43
  3. Message d'erreur sur ouverture module de BDD
    Par zakiabdess dans le forum Bases de données
    Réponses: 8
    Dernier message: 12/02/2007, 21h50
  4. Erreur dans le module wordapplication ?
    Par BXDSPORT dans le forum Delphi
    Réponses: 1
    Dernier message: 12/08/2006, 14h59
  5. message d'erreur sur test module
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 23/11/2005, 20h19

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