python模块导入难题(模块来自子模块)

2024-09-29 21:33:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下项目结构:

./app/__init__.py
./app/main/__init__.py
./app/main/views.py
./app/models.py
./app/resources/__init__.py
./app/resources/changesAPI.py
./config.py
./manage.py

app/models.py文件包含以下行:

^{pr2}$

dbapp/__init__.py中定义

db = SQLAlchemy()

我正在从导入类模型.py来自app/resources/__init__.py

from app.models import User, Task, TaskChange, Revision

但是,当模型尝试导入db时,它将失败:

Traceback (most recent call last):
  File "manage.py", line 5, in <module>
    from app import create_app, db, api
  File "/Users/nahuel/proj/ptcp/app/__init__.py", line 16, in <module>
    from app.resources.changesAPI import ChangesAPI
  File "/Users/nahuel/proj/ptcp/app/resources/__init__.py", line 5, in <module>
    from app.models import User, Task, TaskChange, Revision
  File "/Users/nahuel/proj/ptcp/app/models.py", line 1, in <module>
    from app import db
ImportError: cannot import name db

我做错什么了?在


Tags: infrompyimportappdbinitmodels
1条回答
网友
1楼 · 发布于 2024-09-29 21:33:31

你有一个循环导入。在

您正在从manage.py导入create_appdb和{},这将触发app.resources.changesAPI模块的导入,然后触发导入app/resources中的__init__.py包,然后尝试导入您的models,但由于db尚未在{}中定义,因此失败。在

您需要将importing ChangesAPI移到文件中定义db的行之后的。在app/__init__.py中定义的任何名称在from app.resources.changesAPI import ChangesAPI之前对您的子包可用,后面的名称则不可用。在

相关问题 更多 >

    热门问题