J'ai la structure de fichiers suivante ...
> Boo
> ---modA
> ------__init__.py
> ------fileAA.py
> ---modB
> ------__init__.py
> ------fileBB.py
Quand à l'intérieur de fileBB.py je fais
from modA.fileAA import <something>
J'obtiens l'erreur suivante:
from modA.fileAA import <something>
ModuleNotFoundError: No module named 'modA'
Notez que le __init__.py
les fichiers sont vides et utilisent Python 3.
Qu'est-ce que je manque ou fais mal ici?
main_package
├── __init__.py
├── modA
│ ├── fileAA.py
│ └── __init__.py
└── modB
├── fileBB.py
└── __init__.py
Avoir un __init__.py
dans le répertoire racine, puis utilisez l'importation comme
from main_package.modA.fileAA import something
Exécuter en utilisant un fichier driver
dans main_package
puis lancez, ça va marcher.
Comme vous avez écrit votre code dans fileBB.py
Et que vous essayez d'importer variables/fonctions/classes etc. définies dans fileAA.py
, Vous devez en fait faire quelque chose comme ceci:
Créez d'abord un __init__.py
Vide à l'intérieur Boo.
Essayez ensuite d'importer comme ceci:
from ..modA.fileAA import <something>
Selon mon expérience avec l'écriture de packages, cela devrait fonctionner correctement.
Remarque: Veuillez commenter si cela ne fonctionne pas, je vais aider mais cela ne devrait pas se produire.
Il s'agit presque certainement d'un problème de PYTHONPATH
d'où vous exécutez votre script. En général, cela fonctionne:
$ ls modA/
fileAA.py __init__.py
$ cat modA/fileAA.py
x = 1
$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from modA.fileAA import x
>>> x
1
Vous pouvez regarder sys.path
pour inspecter votre chemin.