Не удалось импортировать модуль - PullRequest
0 голосов
/ 23 октября 2019
├── project
│   ├── app
│   │   ├── __init__.py
│   │   ├── models.py
│   │   ├── forms.py
│   │   ├── script.py

В models.py У меня есть несколько классов, скажем, Class1, Class2, Class3 ... Я могу легко импортировать эти классы из models.py в forms.py, используя from app.models import Class1, Class2, ....

Когда запускается script.py, я не могу импортировать эти классы в script.py таким образом. Иметь ModuleNotFoundError: No module named 'app'script.py) Когда я использую from models import Class1, Class2, ..., имеют ту же ошибку, но в models.py. Если важно, что models.py генерируется Django, forms.py создается мной. Это странно для меня, потому что models.py и forms.py могут распознать модуль app, а script.py - нет, но все эти файлы находятся в одном каталоге. Импортированный при копировании импорт, это не опечатка.

Что может быть не так?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

В этой настройке я обычно делал бы что-то вроде этого:

script.py, будучи основным скриптом, будет в каталоге проекта, рядом с приложением.

init.py будет содержать:

from app import models, forms

script.py будет иметь

import app

Если models.py нужно что-то в forms.py:

try:
    import forms # uses this when ran in models.py
except:
    from app import forms # uses this when ran from script.py

Если forms.py нужно что-нибудьв models.py:

try:
    import models # uses this when ran in forms.py
except:
    from app import models # uses this when ran from script.py
1 голос
/ 23 октября 2019

Если вы выполняете python script.py, переместите его за пределы app модуля.

...