Comment faire par rapport importations en Python?

Imaginer cette structure de répertoire:

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py

Je suis codage mod1, et j'ai besoin d'importer quelque chose de mod2. Comment dois-je faire?

J'ai essayé from ..sub2 import mod2 mais je suis une "Tentative relative à l'importation de non-package".

J'ai googlé autour mais n'a trouvé qu' "sys.path la manipulation de" hacks. N'est-il pas un moyen propre?


Edit: toutes mes __init__.py's sont actuellement vide

Edit2: je suis en train de le faire parce que sub2 contient des classes qui sont partagés entre les sous-paquetages (sub1, subX, etc.).

Edit3: Le comportement, je suis à la recherche est la même que celle décrite dans PEP 366 (merci John B)

  • Je vous recommande de mettre à jour votre question pour le rendre plus clair que vous êtes en décrivant le problème traité dans le PEP 366.
  • C'est un de longue haleine explications, mais regarde ici: stackoverflow.com/a/10713254/1267156 j'ai répondu à une question très semblable. J'ai eu ce même problème jusqu'à ce que la nuit dernière.
  • Pour ceux qui veulent charger un module situé à l'arbitraire d'un chemin d'accès, voir ceci: stackoverflow.com/questions/67631/...
  • Sur une note connexe, Python 3 va changer la gestion par défaut des importations être absolue par défaut; par rapport importations devra être spécifiée explicitement.
InformationsquelleAutor Joril | 2008-09-16