Packaging

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur : Développeurs

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 18 avr. 2013, 14:06

djinn a écrit :Je trouve étonnant que ces paquets soient référencés comme data_files et non comme packages… :-/
Pourrais-tu essayer ce setup.py stp:
from setuptools import setup, find_packages

APP = ['../../src/pyromaths/pyromaths.py']
DATA_FILES = ['pyromaths.icns', 'qt.conf']
OPTIONS = dict(
        plist='Info.plist',
        argv_emulation=True,
        packages=['lxml', 'pyromaths',    'pyromaths/sixiemes',
                  'pyromaths/cinquiemes', 'pyromaths/quatriemes',
                  'pyromaths/troisiemes', 'pyromaths/classes',
                  'pyromaths/lycee',      'pyromaths/outils'],
        includes=['gzip', 'sip', 'PyQt4'],
    )
setup(
    app=APP,
    data_files=DATA_FILES,
    packages    = find_packages('../../src'),
    package_dir = {'pyromaths': '../../src/pyromaths'},
    options={'py2app': OPTIONS},
    setup_requires=['py2app', 'lxml>=2.2.2'],
)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 18 avr. 2013, 14:09

J'ai créé setup.py car la version générique obtenue avec py2applet ne permettait pas d'obtenir une application Pyromaths fonctionnelle.

Le dossier dist contient la version brute de Pyromaths.app obtenu avec py2app:
http://gesnel.fr/dist.zip

Le message d'erreur complet ne te donneras pas plus d'infos que celui plus haut.

Code : Tout sélectionner

18/04/13 14:02:50,404 pyromaths[89098]: Pyromaths Error
An unexpected error has occurred during execution of the main script

ImportError: No module named Resources

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 18 avr. 2013, 14:17

djinn a écrit :Pourrais-tu essayer ce setup.py stp:
Avec ton setup.py, py2app me donne l'erreur suivante:

Code : Tout sélectionner

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 589, in _run
    self.run_normal()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 659, in run_normal
    pkgdirs = self.collect_packagedirs()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 637, in collect_packagedirs
    for pkg in self.packages
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 1045, in get_bootstrap
    bootstrap = imp_find_module(bootstrap)[1]
  File "build/bdist.macosx-10.3-fat/egg/modulegraph/util.py", line 13, in imp_find_module
    result = imp.find_module(name, path)
ImportError: No module named pyromaths/classes
> /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/egg/modulegraph/util.py(13)imp_find_module()
-> result = imp.find_module(name, path)
(Pdb) 

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 18 avr. 2013, 14:56

Yves a écrit :Avec ton setup.py, py2app me donne l'erreur suivante:

Code : Tout sélectionner

Traceback (most recent call last):
(...)
  File "build/bdist.macosx-10.3-fat/egg/modulegraph/util.py", line 13, in imp_find_module
    result = imp.find_module(name, path)
ImportError: No module named pyromaths/classes
En effet, il n'y a pas de module pyromaths/classes: c'est un package. Je me suis trompé dans la déclaration packages: il faut remplacer les "/" par des ".":
from setuptools import setup, find_packages

APP = ['../../src/pyromaths/pyromaths.py']
DATA_FILES = ['pyromaths.icns', 'qt.conf']
OPTIONS = dict(
        plist='Info.plist',
        argv_emulation=True,
        packages=['lxml', 'pyromaths',    'pyromaths.sixiemes',
                  'pyromaths.cinquiemes', 'pyromaths.quatriemes',
                  'pyromaths.troisiemes', 'pyromaths.classes',
                  'pyromaths.lycee',      'pyromaths.outils'],
        includes=['gzip', 'sip', 'PyQt4'],
    )
setup(
    app=APP,
    data_files=DATA_FILES,
    packages    = find_packages('../../src'),
    package_dir = {'pyromaths': '../../src/pyromaths'},
    options={'py2app': OPTIONS},
    setup_requires=['py2app', 'lxml>=2.2.2'],
)
Ceci étant dit, je vois également que, dans le dist que tu m'as envoyé (merci!), les sous-packages (classes, sixiemes, etc) sont présents en plusieurs exemplaires (à la racine, et dans le dossier pyromaths)…
Il y a vraiment un souci avec la gestion des dépendances: en principe, py2app devrait faire le graph des dépendances tout seul comme un grand et on ne devrait même pas avoir à les mentionner.
Je pense que l'origine du problème c'est le hack situé à la fin de pyromaths/pyromaths.py (que tu définis comme lanceur dans py2app) qui modifie dynamiquement le path et empêche ainsi modulegraph de faire son travail:
if __name__ == "__main__":
    basedir = dirname(realpath(__file__))
    _path, _dir = split(basedir)
    sys.path[0] = realpath(_path)
    exec("from %s import pyromaths" % _dir)
    pyromaths.main()
Je pense qu'avec un (nouveau) lanceur tout simple src/pyromaths.py ayant ce contenu:
from pyromaths import pyromaths
pyromaths.main()
… on pourrait se contenter d'un setup.py dans ce genre (voire plus simple encore, en laissant py2applet faire son boulot):
from setuptools import setup, find_packages

APP = ['../../src/pyromaths.py']
DATA_FILES = ['pyromaths.icns', 'qt.conf']
OPTIONS = dict(
        plist='Info.plist',
        argv_emulation=True,
        includes=['gzip', 'sip', 'PyQt4'],
    )
setup(
    app=APP,
    data_files=DATA_FILES,
    packages    = find_packages('../../src'),
    package_dir = {'pyromaths': '../../src/pyromaths'},
    options={'py2app': OPTIONS},
    setup_requires=['py2app', 'lxml>=2.2.2'],
)
(Il faut peut-être rajouter lxml dans les includes)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 18 avr. 2013, 16:28

Avec ta première proposition, j'obtiens l'erreur suivante (je te mets tout le log pour que tu vois le processus):

Code : Tout sélectionner

$ python setup.py py2app
running py2app
running build_py
creating build
creating build/bdist.macosx-10.3-fat
creating build/bdist.macosx-10.3-fat/lib
creating build/bdist.macosx-10.3-fat/lib/pyromaths
copying ../../src/pyromaths/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths
copying ../../src/pyromaths/interface.py -> build/bdist.macosx-10.3-fat/lib/pyromaths
copying ../../src/pyromaths/pyromaths.py -> build/bdist.macosx-10.3-fat/lib/pyromaths
copying ../../src/pyromaths/Values.py -> build/bdist.macosx-10.3-fat/lib/pyromaths
creating build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/aires.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/cinquiemes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/construction.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/priorites.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/proportionnalite.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/relatifs.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/reperage.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/statistiques.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
copying ../../src/pyromaths/cinquiemes/symetrie.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/cinquiemes
creating build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/Fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/Polynome.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/PolynomesCollege.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/Racine.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/SecondDegre.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/Terme.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
copying ../../src/pyromaths/classes/Vecteurs.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/classes
creating build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/CercleTrigo.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/ExoPolynome.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/ExoSecondDegre.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/Fonction.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/lycee.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/SecondDegre.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
copying ../../src/pyromaths/lycee/Vecteurs.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/lycee
creating build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Affichage.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Arithmetique.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Conversions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/decimaux.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Geometrie.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Polynomes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Priorites.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Priorites2.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/Priorites3.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/System.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/TestEnv.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/TexFiles.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
copying ../../src/pyromaths/outils/TeXMiseEnForme.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/outils
creating build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/calcul_mental.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/developpements.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/geometrie.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/litteral.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/puissances.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
copying ../../src/pyromaths/quatriemes/quatriemes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/quatriemes
creating build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/aires.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/angles.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/arrondi.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/decimaux.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/droites.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/espace.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/operations.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/quotients.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/sixiemes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
copying ../../src/pyromaths/sixiemes/symetrie.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/sixiemes
creating build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/__init__.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/affine.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/arithmetique.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/developpements.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/equations.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/fractions.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/geometrie.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/pgcd.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/proba.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/proportionnalite.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/puissances.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/racines.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/systemes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
copying ../../src/pyromaths/troisiemes/troisiemes.py -> build/bdist.macosx-10.3-fat/lib/pyromaths/troisiemes
creating /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/python2.6-standalone
creating /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/python2.6-standalone/app
creating /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/python2.6-standalone/app/collect
creating /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/python2.6-standalone/app/temp
creating /Users/administrateur/pyromaths/scripts/mac/dist
creating build/bdist.macosx-10.3-fat/python2.6-standalone/app/lib-dynload
creating build/bdist.macosx-10.3-fat/python2.6-standalone/app/Frameworks
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.cinquiemes
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.quatriemes
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.sixiemes
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.classes
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.troisiemes
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.lycee
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/modulegraph-0.7.3-py2.6.egg/modulegraph/find_modules.py:197: UserWarning: No package named pyromaths.outils
*** filtering dependencies ***
423 total
44 filtered
5 orphaned
379 remaining
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 589, in _run
    self.run_normal()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 659, in run_normal
    pkgdirs = self.collect_packagedirs()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 637, in collect_packagedirs
    for pkg in self.packages
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/py2app-0.4.3-py2.6.egg/py2app/build_app.py", line 1045, in get_bootstrap
    bootstrap = imp_find_module(bootstrap)[1]
  File "build/bdist.macosx-10.3-fat/egg/modulegraph/util.py", line 13, in imp_find_module
    result = imp.find_module(name, path)
ImportError: No module named cinquiemes
> /Users/administrateur/pyromaths/scripts/mac/build/bdist.macosx-10.3-fat/egg/modulegraph/util.py(13)imp_find_module()
-> result = imp.find_module(name, path)
(Pdb) 
Avec ta deuxième proposition, en créant un nouveau lanceur, ça compile mais les sous-packages (classes, sixiemes, etc) sont absents (je n'ai pas modifié pyromaths/pyromaths.py).

py2app gère mal les dépendances et n'est pas un outil aussi abouti qu'on pourrait l'espérer, c'est pour ça que j'avais créé standalone.sh pour palier à ces déficiences et finaliser le job.

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 18 avr. 2013, 17:12

Yves a écrit :Avec ta première proposition, j'obtiens l'erreur suivante (je te mets tout le log pour que tu vois le processus):
Ok. Même erreur que précédemment, donc.
C'est étrange: il copie bien tous les fichiers nécessaires, mais ensuite modulegraph ne s'y retrouve pas. En l'occurrence il ne trouve pas certains packages -- qu'il prend d'ailleurs pour des modules. En gros, on dirait qu'il ne gère pas (ou mal) la directive package_dir
Yves a écrit :Avec ta deuxième proposition, en créant un nouveau lanceur, ça compile mais les sous-packages (classes, sixiemes, etc) sont absents (je n'ai pas modifié pyromaths/pyromaths.py).
py2app gère mal les dépendances et n'est pas un outil aussi abouti qu'on pourrait l'espérer, c'est pour ça que j'avais créé standalone.sh pour palier à ces déficiences et finaliser le job.
Tu pourrais peut-être essayer cette deuxième proposition (avec lanceur simplifié dans src/), en spécifiant explicitement les packages (comme dans la première proposition). Mais franchement, je n'y crois pas trop…

Ceci étant dit, je vois que tu utilises py2app v0.4.3 et modulegraph v0.7.3. Afin d'éviter de perdre du temps sur un éventuel bug qui aurait été corrigé depuis, est-ce que tu pourrais réessayer avec les versions actuelles: [url=packagehttps://pypi.python.org/pypi/py2app]py2app (v0.7.3)[/url] et modulegraph (v0.10.4)?
Question subsidiaire: en temps normal setuptool se repose sur le SCM pour savoir quels fichiers font partie d'un projet (au moins pour la commande sdist, je ne crois pas que cela soit nécessaire avec py2app). Cependant, le support de git nécessite l'ajout du plugin setuptool-git. Est-ce que tu l'utilises?

Merci encore à toi pour ta gentillesse et ta rapidité de réaction, et vraiment désolé de t'utiliser comme un vulgaire terminal organique! ;-)
Si seulement j'avais un accès à un mac quelque part via ssh
Dernière modification par djinn le 18 avr. 2013, 20:11, modifié 1 fois.

Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
Messages : 1130
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Packaging

Message par Jérôme » 18 avr. 2013, 18:51

Salut,
je viens de tenter de mon côté pour Linux et Windows. Le paquet deb et exe se font bien (je n'ai pas testé le deb mais il se crée). par contre, j'ai un souci avec le rpm :
#--------------------------------------------
#--------- CRÉATION DU PAQUET RPM -----------
#--------------------------------------------
running bdist
running bdist_rpm
error: error in 'install_script' option: 'install-rpm.sh' does not exist or is not a file
mv: impossible d'évaluer «dist/pyromaths-13.04*.noarch.rpm»: Aucun fichier ou dossier de ce type
Je n'ai absolument pas cherché ce qui pouvait poser problème... pas trop le temps :?
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 18 avr. 2013, 20:07

Jérôme a écrit :Je n'ai absolument pas cherché ce qui pouvait poser problème... pas trop le temps :?
Merci du feedback, et pas de souci: c'est ma responsabilité de réparer ça. En plus, je crois que tu as mieux à faire ces jours-ci. :-)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 18 avr. 2013, 20:24

djinn a écrit : Tu pourrais peut-être essayer cette deuxième proposition (avec lanceur simplifié dans src/), en spécifiant les explicitement les packages comme dans la première proposition. Mais franchement, je n'y crois pas trop…
Ce n'est pas mieux.
djinn a écrit :Ceci étant dit, je vois que tu utilises py2app v0.4.3 et modulegraph v0.7.3. Afin d'éviter de perdre du temps sur un éventuel bug qui aurait été corrigé depuis, est-ce que tu pourrais réessayer avec les versions actuelles
J'ai installé les nouvelles versions et elles sont loin de fonctionner "out of the box". La dernière version de py2app est buggée et n'est pas compatible avec python 2.6. J'ai installé un fix mais il y a encore d'autres problèmes et j'ai préféré revenir à mes versions fonctionnelles. Worse is better!
djinn a écrit :Question subsidiaire: en temps normal setuptool se repose sur le SCM pour savoir quels fichiers font partie d'un projet (au moins pour la commande sdist, je ne crois pas que cela soit nécessaire avec py2app). Cependant, le support de git nécessite l'ajout du plugin setuptool-git. Est-ce que tu l'utilises?
Non.
djinn a écrit :Merci encore à toi pour ta gentillesse et ta rapidité de réaction, et vraiment désolé de t'utiliser comme un vulgaire terminal organique! ;-)
Pas de soucis, c'est avec plaisir. :)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 19 avr. 2013, 08:43

Le setup.py suivant est fonctionnel avec la nouvelle arborescence:

Code : Tout sélectionner

from setuptools import setup

APP = ['../../src/pyromaths/pyromaths.py']
DATA_FILES = ['pyromaths.icns', 'qt.conf', '../../src/pyromaths/sixiemes', '../../src/pyromaths/cinquiemes', '../../src/pyromaths/quatriemes', '../../src/pyromaths/troisiemes', '../../src/pyromaths/classes', '../../src/pyromaths/lycee', '../../src/pyromaths/outils', '../../src/pyromaths/__init__.py', '../../src/pyromaths/interface.py']
OPTIONS = dict(
        plist='Info.plist',
        argv_emulation=True,
        packages=['lxml'],
        includes=['gzip', 'sip', 'PyQt4'],
    )
setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
Sans déclarer __init__.py il y a l'erreur "No module named Resources" et sans interface.py les pdf ne sont pas créés. Il faut aider py2app pour les dépendances.

J'ai modifié setup.py sur le git.

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 19 avr. 2013, 12:02

Merci pour la correction. :-)
Yves a écrit :Le setup.py suivant est fonctionnel avec la nouvelle arborescence:
APP = ['../../src/pyromaths/pyromaths.py']
DATA_FILES = ['pyromaths.icns', 'qt.conf', '../../src/pyromaths/sixiemes', '../../src/pyromaths/cinquiemes', '../../src/pyromaths/quatriemes', '../../src/pyromaths/troisiemes', '../../src/pyromaths/classes', '../../src/pyromaths/lycee', '../../src/pyromaths/outils', '../../src/pyromaths/__init__.py', '../../src/pyromaths/interface.py']
Sans déclarer __init__.py il y a l'erreur "No module named Resources" et sans interface.py les pdf ne sont pas créés.
Je note que tu as omis Values.py qui était présent dans ta version précédente (pré-déplacement du code, soit develop~2). C'est fait exprès? Le dmg tourne quand même sans problèmes?
Yves a écrit :Il faut aider py2app pour les dépendances.
Ce qui m'embête c'est qu'avec cette méthode, on aide pas vraiment py2app avec les dépendances: en fait, on le contourne entièrement en prétendant que les fichiers de code ne sont que des données, qu'on inclue de force (manuellement).
Certes ça fonctionne, mais ça n'est pas très satisfaisant.
Je vais voir si je peux installer OSX dans une machine virtuelle pour étudier ça de plus près…

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 19 avr. 2013, 12:05

Yves a écrit :Avec ta deuxième proposition, en créant un nouveau lanceur, ça compile mais les sous-packages (classes, sixiemes, etc) sont absents (je n'ai pas modifié pyromaths/pyromaths.py).
Pour info, c'est exactement le comportement que j'observais avant d'installer le plugin setuptool-git.

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 19 avr. 2013, 12:22

Pyromaths.app fonctionne effectivement sans Values.py. Sinon le dmg, c'est juste un fichier archive (image disque).

Pour py2app, je force l'inclusion des dépendances et pour l'utilisateur final l'objectif est atteint, l'application est fonctionnelle.

C'est une bonne idée d'installer OS X sur une machine virtuelle. Dans la doc, l'article suivant te fera gagner du temps:
http://www.pyromaths.org/contribuer/dev ... -mac-os-x/

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 19 avr. 2013, 15:35

J'écris ce post depuis OS X, tournant dans une machine virtuelle VirtualBox. :P
Par contre c'est une version 10.7, or je me rends compte que la doc que tu m'as fournie est faite pour des versions 10.6 au max. J'espère que ça ne me posera pas trop de problèmes...

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 19 avr. 2013, 16:14

OS X 10.6 était la dernière version disponible quand j'ai rédigé la doc. Même si les versions indiquées des composants à installer ne sont plus d'actualité, il n'y a pas de soucis avec la 10.7 et même la 10.8. :)

Répondre