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 :

py2app Error dyld_find()


Sujet :

Déploiement/Installation Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut py2app Error dyld_find()
    Bonjour à tous,

    Je me suis tenté de faire une version alias de mon script en utilisant les commandes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    py2applet --make-setup OneFile.py
    python setup.py py2app -A
    Ca marche très bien à part qu'il a fallu que je fasse un lien symbolique pour avoir utiliser Tcl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo ln -s /Users/MyName/anaconda /opt/anaconda1anaconda2anaconda3
    Un fois que j'ai eu cette version alias de mon script, j'ai voulu me faire une version distribuable avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rm -rf dist build
    python setup.py py2app
    Et là j'ai le message suivant :

    TypeError : dyld_fond() got an unexpected keyword argument 'loader'
    Si quelqu'un pouvait m'aider à comprendre le message, je suis preneur.

    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Bonjour à tous,

    Je me suis tenté de faire une version alias de mon script en utilisant les commandes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    py2applet --make-setup OneFile.py
    python setup.py py2app -A
    Ca marche très bien à part qu'il a fallu que je fasse un lien symbolique pour avoir utiliser Tcl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo ln -s /Users/MyName/anaconda /opt/anaconda1anaconda2anaconda3
    Un fois que j'ai eu cette version alias de mon script, j'ai voulu me faire une version distribuable avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rm -rf dist build
    python setup.py py2app
    Et là j'ai le message suivant :



    Si quelqu'un pouvait m'aider à comprendre le message, je suis preneur.

    Bien cordialement,
    Christophe Halgand
    Bonjour,

    Je reviens de consulter mon chamane habituel, il m'a dit : "quelque part dans ta démarche, tu trouveras sur ta route un bout de code qui dit dyld_fond(....., loader=...) et c'est cet argument nommé qui pose problème."

    Et moi, quand mon chamane me dit cela... il est super fort au jeu des devinettes.

    @+.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Buvons frais et restons calme...

    Et donc... Pourquoi ça marche en script, en appli alias et pas en appli standalone ? Comment corriger cette

    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Buvons frais et restons calme...

    Et donc... Pourquoi ça marche en script, en appli alias et pas en appli standalone ? Comment corriger cette

    Bien cordialement,
    Christophe Halgand
    Bon ben je vais vous le dire plus clairement : vu le peu d'éléments de recherche que vous nous fournissez, on peut jouer aux devinettes un bon moment.

    Voilà, mon bon m'sieur.

    @+.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Quelles informations vous faut-il en plus ?

    Je peux déposer le script. Quelqu'un arrive-t-il a en faire une application standalone sous mac avec py2app ?

    Bien cordialement,
    Christophe Halgand
    Fichiers attachés Fichiers attachés
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Quelles informations vous faut-il en plus ?
    Par exemple, le message d'erreur :

    TypeError : dyld_fond() got an unexpected keyword argument 'loader'
    N'y a-t-il pas un traceback plus complet que ça avec chemins fichiers, numéro de ligne erreur, etc ?

    Ca aide pas mal à comprendre où le problème se situe et -parfois- à comprendre ce qui se passe.

    @+.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Voici le message complet si je comprends que je n'ai donné qu'une partie :

    Traceback (most recent call last):
    File "setup.py", line 18, in <module>
    setup_requires=['py2app'],
    File "/Users/chalgand/anaconda/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
    File "/Users/chalgand/anaconda/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
    File "/Users/chalgand/anaconda/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
    File "/Users/chalgand/anaconda/lib/python2.7/site-packages/py2app-0.8-py2.7.egg/py2app/build_app.py", line 651, in run
    self._run()
    File "/Users/chalgand/anaconda/lib/python2.7/site-packages/py2app-0.8-py2.7.egg/py2app/build_app.py", line 857, in _run
    self.run_normal()
    File "/Users/chalgand/anaconda/lib/python2.7/site-packages/py2app-0.8-py2.7.egg/py2app/build_app.py", line 947, in run_normal
    self.create_binaries(py_files, pkgdirs, extensions, loader_files)
    File "/Users/chalgand/anaconda/lib/python2.7/site-packages/py2app-0.8-py2.7.egg/py2app/build_app.py", line 1107, in create_binaries
    platfiles = mm.run()
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 105, in run
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 84, in run_file
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 110, in scan_node
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 93, in load_file
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 23, in locate
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 49, in locate
    TypeError: dyld_find() got an unexpected keyword argument 'loader'
    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Voici le message complet si je comprends que je n'ai donné qu'une partie :

    Bien cordialement,
    Christophe Halgand
    Bon ben voilà.

    File "/Users/chalgand/anaconda/lib/python2.7/site-packages/py2app-0.8-py2.7.egg/py2app/build_app.py", line 1107, in create_binaries
    platfiles = mm.run()
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 105, in run
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 84, in run_file
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 110, in scan_node
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 93, in load_file
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 23, in locate
    File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 49, in locate
    TypeError: dyld_find() got an unexpected keyword argument 'loader'
    D'après ce qui est indiqué ici, vous avez les fichiers MachOStandalone.py et MachOGraph.py qui font appel à dyld_find() avec un argument nommé loader=... qui n'est visiblement pas pris en charge par la version de l'installation actuelle de py2app.

    Si vous regardez le fichier MachOStandalone.py qui se trouve dans build/bdist.macosx-10.5-x86_64/egg/macholib/ à la ligne 105 de la fonction run(), par exemple, vous devriez avoir quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dyld_find(..., loader=...)
    Et ce paramètre loader n'est pas implémenté dans la version actuelle de py2app.

    Peut-être voir s'il existe une version plus récente de py2app avant d'essayer de bricoler dans les fichiers ?

    Pour un peu, py2app doit aussi avoir une doc et/ou un service de feedback de bug (bug report) qui pourrait vous aiguiller sur un problème apparemment spécifique à ce logiciel.

    Et là...

    Enfin, moi, je vois ça comme ça.

    @+.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci quand même d'avoir essayé de m'aider. J'utilise ma dernière version de py2app (0.8). Je vais regarder le support.

    Si quelqu'un peut me guider pour une autre méthode afin d'éviter d'installe anaconda sur chaque ordi, ce serait cool.

    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    Dans macholib / macholib / dyld.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def dyld_find(name, executable_path=None, env=None, loader_path=None):
        """
        Find a library or framework using dyld semantics
        """
    Appelé depuis la ligne 47
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        def locate(self, filename, loader=None):
            assert isinstance(filename, (str, unicode))
            if filename.startswith('@loader_path/') and loader is not None:
                fn = self.trans_table.get((loader.filename, filename))
                if fn is None:
                    try:
                        fn = dyld_find(filename, env=self.env,
                            executable_path=self.executable_path,
                            loader=loader.filename)                                     #<--- this one
                        self.trans_table[(loader.filename, filename)] = fn
                    except ValueError:
                        return None
    Vous voyez bien qu'il y a un "typo".
    Vous devriez pouvoir éditer le fichier et remplacer loader par loader_path.
    Après, il faut croiser les doigts pour qu'il n'y ait pas d'autres gags ailleurs.
    Et se poser la question sur le pourquoi il n'y a que vous qui seriez passé par là.

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

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci, j'avais vu cette intervention sur un forum mais bon, vu qu'anaconda ne s'était déjà pas installé correctement, il y avait peut-être une autre explication.

    En tous cas, je testerais demain. Pourquoi je serais le seul à passer par là ? Et bien, parce que je viens de faire la mise à jour de mon mac y'a deux jours, que mon code a peut-être une faille qui me dépasse...

    Je vous tiens au courant.

    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  12. #12
    Invité
    Invité(e)
    Par défaut
    Merci de cliquer si votre problème a trouvé réponse.

    @+.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci de votre conseil, je connais très bien le site. Mon problème reste entier.

    Je vais reprendre par la base en faisant un HelloWorld pour voir si ça vient de mon installe ou si il y a quelque chose dans mon code qui dérange mon ordi...

    Bien cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Merci de votre conseil, je connais très bien le site. Mon problème reste entier.

    Je vais reprendre par la base en faisant un HelloWorld pour voir si ça vient de mon installe ou si il y a quelque chose dans mon code qui dérange mon ordi...
    Si vous avez mis à jour la ligne du fichier MachOGraph.py comme suggéré, le problème devrait s'être déplacé.

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

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Je reviens vers vous pour vous signaler que je n'ai pas de fichier MachOGraph.py. Il existe dans le module py2installer que j'avais installé mais après une réinstalle d'anaconda et py2app, je n'ai plus ce fichier. En revanche, j'ai bien un dyld.py (/anaconda/lib/python2.7/ctypes/macholib/).

    Voici le début de la fonction dyld_find :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def dyld_find(name, executable_path=None, env=None):
        """
        Find a library or framework using dyld semantics
        """
        name = ensure_utf8(name)
        executable_path = ensure_utf8(executable_path)
        for path in dyld_image_suffix_search(chain(
                    dyld_override_search(name, env),
                    dyld_executable_path_search(name, executable_path),
                    dyld_default_search(name, env),
                ), env):
            if os.path.isfile(path):
                return path
        raise ValueError("dylib %s could not be found" % (name,))
    Je ne vois donc pas où modifier le "loader" en "loader_path"...

    Bien cordialement,
    christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    La fonction locate qui plante est dans le fichier build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py.
    C'est celui donné dans la trace.
    Le "egg" signifie que cette biblio. (utilisée par py2app) est une sorte de fichier zip.
    Le fichier "/anaconda/lib/python2.7/ctypes/macholib/" est un autre "macholib".

    MachOLib un ensemble d'utilitaires pour éditer les en-têtes de fichiers Mach-O. Des objets "Mach". Mach est le nom du micro-kernel qui est "sous" OSX. Les "micro-kernel" est une technologie de construction des noyaux du système d'exploitation. C'est ce qui rend OSX "robuste".

    Si votre application dépend de la bibliothèque X éditée par un tiers, vous voulez vous assurez d'utiliser la version avec laquelle vous avez développé, testé,... Si vous utilisez une bibliothèque partagée avec d'autres applications, vous ne voulez pas qu'une mise à jour intempestive foute la grouille chez vous. Le plus simple est d'embarquer la biblio. avec l'application.
    Vous savez que tout fonctionne avec cette version là. Le jour ou il faudra "monter" en version, vous pourrez: récupérer la dernière version, intégrer les "changes" si nécessaire, tester,... et re-livrer.
    => vous pouvez avoir un tas de mach-o lib sur votre machine.

    Ceci dit, je n'ai jamais trop regardé si on pouvait utiliser directement ces "eggs".
    En général, ce sont des logiciels open-source: récupérer les sources et reconstruire "from scratch" est quand même plus simple.

    Mais je comprends très bien que parti à construire une bête application standalone sur OSX... vous n’êtes pas préparé pour vous embourber dans un tel détour.

    Le plus simple est de contacter les développeurs. Cà peut répondre vite, mais c'est selon les équipes.
    Après il y a le "do-it-yourself" ou se passer du lien symbolique qui semble se dérouter le build vers cette branche de code pourrie.

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

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Je reviens vers vous pour vous signaler que je n'ai pas de fichier MachOGraph.py. Il existe dans le module py2installer que j'avais installé mais après une réinstalle d'anaconda et py2app, je n'ai plus ce fichier. En revanche, j'ai bien un dyld.py (/anaconda/lib/python2.7/ctypes/macholib/).

    Voici le début de la fonction dyld_find :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def dyld_find(name, executable_path=None, env=None):
        """
        Find a library or framework using dyld semantics
        """
        name = ensure_utf8(name)
        executable_path = ensure_utf8(executable_path)
        for path in dyld_image_suffix_search(chain(
                    dyld_override_search(name, env),
                    dyld_executable_path_search(name, executable_path),
                    dyld_default_search(name, env),
                ), env):
            if os.path.isfile(path):
                return path
        raise ValueError("dylib %s could not be found" % (name,))
    Je ne vois donc pas où modifier le "loader" en "loader_path"...

    Bien cordialement,
    christophe Halgand
    Bonjour,

    A priori, je dirais que les dévs de dyld_find() sont passés de loader à loader_path puis finalement à executable_path.

    En revanche, il n'est pas dit que ce paramètre ait conservé la même fonctionnalité.

    Etonnant qu'ils n'aient à aucun moment veillé à la compatibilité ascendante.

    A la limite - je me demandais - si votre install de py2app est trop récente, pourquoi ne pas essayer avec des versions plus anciennes, qui auront fait leurs preuves et qui auront sans doute plus de support ?

    Je ne sais pas si vous avez étudié la doc : http://pythonhosted.org/py2app/

    dependencies : http://pythonhosted.org/py2app/dependencies.html

    changelog (important pour savoir ce qui s'est passé d'une version à une autre) : http://pythonhosted.org/py2app/changelog.html

    on trouve parfois des indications intéressantes dans les changelogs.

    à voir.

    @+.

Discussions similaires

  1. ERROR: pg_atoi: zero-length string
    Par steelspirit92 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2003, 22h29
  2. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  3. [Kylix] Kylix c++ error
    Par pacpac dans le forum EDI
    Réponses: 2
    Dernier message: 10/06/2003, 16h27
  4. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 15h44
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

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