Je ne peux pas pour ma vie obtenir les importations relatives de python au travail. J'ai créé un exemple simple d'où il ne fonctionne pas:Quelqu'un peut-il expliquer les importations relatives de python?
La structure du répertoire est:
/__init__.py
/start.py
/parent.py
/sub/__init__.py
/sub/relative.py
/start.py
ne contient que: import sub.relative
/sub/relative.py
contient seulement from .. import parent
Tous les autres fichiers sont blanc.
Lors de l'exécution de ce qui suit sur la ligne de commande:
$ cd/
$ python start.py
je reçois:
Traceback (most recent call last):
File "start.py", line 1, in <module>
import sub.relative
File "/home/cvondrick/sandbox/sub/relative.py", line 1, in <module>
from .. import parent
ValueError: Attempted relative import beyond toplevel package
J'utilise Python 2.6. pourquoi est-ce le cas? Comment faire fonctionner cet exemple de bac à sable?
Vous confondez les termes 'module' et 'paquet'. 'start.py' représente le module 'start', 'mod' et 'mod.sub' sont des paquets, 'mod' est un paquetage de premier niveau. –
Merci, mais cela semble vraiment honnête. Pour un si beau langage, je ne peux pas croire que les concepteurs créeraient une telle restriction.N'y a-t-il pas d'autre moyen? – carl
Ce n'est pas idiot du tout. Les importations relatives sont un moyen de se référer à des modules frères dans un paquet. Si vous souhaitez importer un module de niveau supérieur, utilisez les importations absolues. –