J'ai un module nommé extended.py
qui contient la ligne suivante:
from .basic import BasicModule
et le fichier basic.py
réside dans le même répertoire que __init__.py
. Cependant, lorsque j'essaie de l'exécuter en tant que:
python extended.py
Je reçois l'erreur:
ValueError: Attempted relative import in non-package
Ajout également de la ligne:
from __future__ import absolute_import
ne résout pas le problème. Peut-être que je suis trop fatigué pour voir l'évidence - mais je ne vois pas le problème ici.
Les importations relatives ne fonctionnent que pour les packages, mais lorsque vous importez dans extended.py
vous exécutez un module de niveau supérieur à la place.
Le répertoire actuel peut contenir un __init__.py
fichier mais cela ne fait pas exended.py
partie d'un package pour le moment.
Pour que quelque chose soit considéré comme un package, vous devez importer le nom du répertoire à la place. Les éléments suivants fonctionneraient:
main.py
packagename\
__init__.py
basic.py
extended.py
puis dans main.py
mettre:
import packagename.extended
et seulement alors fait partie de extended
d'un package et effectue des importations relatives.
L'importation relative a maintenant quelque chose à être relatif à, le parent packagename
.