python emballage relative des importations

Tout d'abord à tous: je suis désolé, je sais qu'il y a beaucoup de question à propos relatif des importations, mais je ne l'ai pas trouver une solution. Si possible, je voudrais utiliser le répertoire suivant la mise en page:

myClass/
    __init__.py
    test/
        demo.py
        benchmark.py
        specs.py
    src/
        __init__.py
        myClass.py

Maintenant mes questions sont:

  • Comment faire le test des fichiers à partir de l'intérieur de l'emballage correctement à l'importation myClass.py?

  • Comment voulez-vous importer le package à partir de l'extérieur, en supposant que vous prenez myClass en tant que sous-module dans libs/maclasse ou include/maclasse?

Jusqu'à présent, je n'arrivais pas à trouver une solution élégante pour cette. Ce que je comprends Guido Décision du il devrait être possible de faire from ..src import myClass mais cette erreur:

ValueError: Attempted relative import in non-package

Qui ressemble comme il ne permet pas de traiter myClass sous forme de forfaits. La lecture de la documentation:

L' __init__.py les fichiers sont requis pour assurer le Python traiter les répertoires contenant les paquets;

Il semble que je suis absent quelque chose qui spécifie où les scripts du paquet, dois-je utiliser .la pth ?

  • Newey, oui, vous avez raison, relative importations semble être un sujet permanent et après avoir lu quelques réponses que j'ai toujours eu envie de me décrire précisément ma situation. Après avoir montré ce q, sur la #python canal IRC un certain nombre de personnes recommandé d'utiliser la plate structure de répertoire: "beaucoup de gens résistent à la façon Python veut utiliser les répertoires et les fichiers pour la sémantique de l'espace de noms de l'information. Il est préférable de donner et de faire ce que Python veut." jcalderone.livejournal.com/39794.html
  • Quelqu'un pourrait-il fournir un lien vers un monde réel des paquets, avec des exemplaires à la disposition des répertoires, ou à la suite de certaines conventions? (idéalement sur github)
  • Est-il __init__.py dans le test répertoire? ValueError: Attempted relative import in non-package pourrait être liée à elle.
  • stackoverflow.com/questions/1803292/... docs.python.org/distutils/examples.html
InformationsquelleAutor eerne | 2010-12-03