module mashDetail introuvable

Bug #1091410 reported by Nico on 2012-12-17
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
JolieBulle
Critical
314r

Bug Description

comportement constaté sur le trunk suite aux derniers ajouts:

$ python3 main.py
Traceback (most recent call last):
  File "main.py", line 53, in <module>
    from mashDetail import *
ImportError: No module named 'mashDetail'

=> il doit manquer le commit d'un nouveau module.

314r (314r) wrote :

Exact. Un de mes oublis classiques...

Changed in joliebulle:
importance: Undecided → Critical
status: New → Fix Committed
assignee: nobody → 314r (314r)
milestone: none → 2.8
Le suisse (lesuisse-dev) wrote :

Faudrait regarder aussi du côté du setup.py s'il n'y a pas moyen de le simplifier afin d'éviter que ce genre d'erreur ce produise lors du packaging.

Je joins une proposition de modif même si je doute que ce soit une façon clean de faire les choses. À noter que dans ce cas le MANISFEST.in n'est pas utile.

314r (314r) wrote :

Effectivement, il faut résoudre ce problème.
Je pense que c'est précisément l'intérêt du Manifest.in.

Jetez un oeil aux deux pièces jointes ci dessous, ça me semble être une solution un peu plus propre. Si ça vous semble correct, je met à jour trunk rapidement.

314r (314r) wrote :
314r (314r) wrote :
Le suisse (lesuisse-dev) wrote :

Je viens de regarder le MANIFEST.in ne semble pas être lu lors d'un setup.py install. De plus, la sélection complète d'un répertoire dans des data_files fait crasher le script.
Un sujet sur StackOverflow correspond plus ou moins au problème qu'on rencontre içi : http://stackoverflow.com/questions/3596979/manifest-in-ignored-on-python-setup-py-install-no-data-files-installed

Je pratique peu le Python et j'avoue que les setuptools m'apparaissent comme peu flexible et un poil obscure.

Nico (nico44) wrote :

Salut,

As-tu regardé le setup.py que j'ai créé pour Mac ?
Il y a une partie spécifique à l'environnement MacOS, mais pour le reste ça devrait reprendre les mêmes paramétrage pour tous les OS. Notamment, dans ce script, il n'y a pas la liste exhaustive des fichiers comme c'est le cas pour le setup.py pour plate-forme Windows.

314r (314r) wrote :

@Le Suisse : effectivement modifier le Manifest.in ne sert à rien.
@Nico : ton setup m'a l'air très spécifique à py2app non ?

Je vais lire la discussion sur StackOverflow quand j'ai un moment et faire quelques essais.

Nico (nico44) wrote :

pour moi la seule partie spécifique à MacOS, c'est la partie py2app dans le setup.py :
py2app=dict(
   iconfile='bulle.icns',
# site_packages=True,
   plist=dict(
    CFBundleName = NAME,
    CFBundleShortVersionString = VERSION, # must be in X.X.X format
    CFBundleGetInfoString = NAME + " " + VERSION,
    CFBundleExecutable = NAME,
    CFBundleIdentifier = "com.joliebulle",
    LSEnvironment = {'LC_ALL':'en_US.UTF-8'}
   ),
   argv_emulation=True,
   includes=['sip', 'PyQt4','PyQt4.QtNetwork'],
# packages=DATA_FILES
  ),

le reste devrait pouvoir être repris tel quel pour les autres environnements.

Le suisse (lesuisse-dev) wrote :

Je viens de jeter un œil en laissant tel quel on se retrouve juste avec un fichier texte contenant les fichiers à inclure mais il ne réalise pas l'inclusion.
J'ai du coup fait quelques modifs, ca devrait marcher aussi bien pour du Linux que pour Mac OS (pas de quoi tester en ce moment en revanche...).

Par ailleurs il semble que l'emplacement le plus souvent utilisé pour les apps Python, au moins sur ma distrib, est /usr/share. J'ai rajouté la ligne install_lib=/usr/share/joliebulle au fichier setup.cfg pour que ca correspondent.

Nico (nico44) wrote :

Salut (et Joyeux Noël),

J'ai testé rapidement ton script sur Mac. Ca fonctionne a peu près mais il y a quelques réglages à faire je pense. Est-ce que tu peux comiter sur une branche pour que je fasse les corrections nécessaires et que vous puissiez ensuite tester sur Linux et Win.
En fait ça serait pas mal si on pouvait garder 1 seul script de construction pour les 3 OS.
A+

Le suisse (lesuisse-dev) wrote :

Bonnes fêtes à toi aussi.

Je viens de créer une nouvelle branche qui contient les modifications mais il semble qu'il n'est pas possible d'accorder la possibilité de l'éditer à d'autres personnes sauf en passant par la création d'une team.

Nico (nico44) wrote :

Salut,
En fait ton script setup.py fonctionne avec py2app ) condition de supprimer la ligne :
#packages = [ "" ],
de la configuration.
=> J'arrive à créer le paquet applicatif pour MacOS.

Le suisse (lesuisse-dev) wrote :

Je viens de faire la modif pour que ca fonctionne à la fois sur MacOS et Linux. N'étant pas du tout familier avec les méthodes de packaging sous Windows je laisse le soin à 314r de jeter un œil dessus quand il aura un peu de temps.

Nico (nico44) wrote :

Nickel.
Par contre je pense qu'il faudrait "isoler" le setup.py dans un sous-répertoire (par ex. dist/) comme cela est déjà le cas pour Windows et Mac. En effet, je ne sais pas comment ça se passe sous Linux, mais sous Mac py2app génère un tas de merdier qui se retrouve mélanger avec le source => pas terrible ...
Donc si tu pouvais déplacer le setup.py dans dist/ ça me parait pas mal. Du coup les fichiers setup.py situés dans Win/ et MacOS/ sont obsolètes. Par contre il faut bien garder les fichiers spécifiques (ex. qt.conf pour Mac).

314r (314r) wrote :

Salut la compagnie. Le setup du Suisse fonctionne chez moi, avec une réserve sous Ubuntu 12.10 :

- après la ligne
elif platform == 'linux':
    from distutils.core import setup
il faut ajouter un
else :
    from distutils.core import setup

sinon ça ne passe pas, bizarrement.

Autre réserve, les droits du fichier main.py sont modifiés à l'installation et le fichier n'est plus exécutable. Je suis obligé de faire un chmod 755 à la main, l'idéal serait d'ajouter ça dans le script. J'ai l'impression que c'est spécifique à Ubuntu, en tout cas sous Arch je n'ai pas ce problème.

Bonnes fêtes de fin d'année à vous !

Le suisse (lesuisse-dev) wrote :

Hola,
@314r : Oui, il semblerait que sys.platform renvoie soit 'linux', soit 'linux2' en fonction de la version de Linux et de Python installé. Visiblement comme on l'a constaté avec Arch ca tend à devenir 'linux'. J'ai fait la correction.
Pour le problème d'exécution j'ai modifié le launcher pour que ce soit Python qui démarre le script. Ca évite aux packagers de faire le chmod.

@Nico : Effectivement, je rencontre pas le problème mais il semble logique d'isoler l'installateur du reste des sources. Je me suis aussi aperçu que je n'intégrais pas le fichier qt.conf.

314r (314r) wrote :

Beau travail ! On y est presque. Pour le launcher ça ne passe pas tel quel sous ubuntu, il faut spécifier la version 3 de python :

python3 main.py $@

Je pense que c'est le cas pour toutes les distribs utilisant python par défaut.

Le suisse (lesuisse-dev) wrote :

C'est fait. C'est l'habitude de bosser avec Arch, le lien par défaut pour Python est Python 3 depuis quelques mois déjà.

314r (314r) on 2013-02-12
Changed in joliebulle:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers