L'importation de modules dossier parent

Je suis en cours d'exécution Python 2.5.

C'est mon arborescence de dossiers:

ptdraft/
  nib.py
  simulations/
    life/
      life.py

(J'ai aussi __init__.py dans chaque dossier, omis ici pour des raisons de lisibilité)

Comment puis-je importer les nib module à partir de l'intérieur de la life module? J'espère que c'est possible de le faire sans bricoler avec sys.chemin d'accès.

Remarque: Le module principal en cours d'exécution est dans le ptdraft dossier.

  • Quel est votre PYTHONPATH paramètre?
  • Ross: j'ai regardé là. Que dois-je faire à ce sujet? J'ai déjà un __init__.py. S. Lott: je ne sais pas comment faire pour vérifier...
  • echo $PYTHONPATH de la coquille; import sys; print sys.chemin d'accès de l'intérieur de Python. docs.python.org/tutorial/...
  • Google est un bouillonné de moteur de recherche, de sorte que le fait que ce résultat est assez élevé pour vous n'a pas d'importance. Le plus important est le fait que la non-barboter moteur de recherche DuckDuckGo, également rangs ce très fortement.
  • Il n'y a rien de mal à faire un absolu à l'importation comme à hasen de réponse. Ceci est fait des centaines de fois dans Django. Il est tout à fait acceptable. Dans certains cas, faire un par rapport à l'importation est plus agréable et plus courtes, donc n'hésitez pas à utiliser ces méthodes de façon interchangeable.
  • Mon avis a changé depuis Absolus des Importations. Relative des importations sont sympas, mais "Explicite est mieux qu'Implicite" et, dans une moindre mesure, "les espaces de noms sont un "honkin grande idée"
  • mais j'ai entendu relative des importations est considéré comme un mauvais comportement?
  • Vous pouvez prendre un coup d'oeil à ce guide définitif chrisyeh96.github.io/2017/08/08/...
  • Je recommande fortement de sauter passé tous les sys.path ou PYTHONPATH réponses et check out np8 excellente réponse. Oui, c'est long à lire. Oui, il ressemble à beaucoup de travail. Mais c'est la seule réponse qui résout effectivement le problème correctement et proprement.
  • Qu'est-il arrivé à l'exécutable de pseudo? Pourquoi est-il une telle douleur pour importer des modules à partir d'un dossier parent en Python? Ce qui est absurde.
  • Il est difficile que si vous êtes incohérent: à l'aide d'un fichier de mise en page appropriée pour un paquet (compliqué, bibliothque, de qui de votre script, mais un client), mais d'essayer de l'exécuter comme un jetable script (sans même python -m).

InformationsquelleAutor Ram Rachum | 2009-04-03