无法导入模块

时间:2019-10-23 14:21:04

标签: python import

├── 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.pyforms.py可以识别app模块,而script.py无法识别,但是所有这些文件都放在一个目录中。复制粘贴的导入,这不是打印错误。

怎么了?

2 个答案:

答案 0 :(得分:1)

如果您正在执行python script.py,请将其移至app模块之外。

答案 1 :(得分:1)

在这种设置下,我通常会这样做:

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