python cannot import name_Python ImportError: cannot import name

Python 项目逐渐增大,循环导入时,一不留神可能碰到错误:

ImportError: cannot import name ‘’

出现此问题一般是因为在导入模块时顺序上了问题

看如下例子:

./test

├── main.py

├── sub_a.py

├── sub_b.py

# main.py

from sub_a import x

print(x + 1)

# sub_a.py

from sub_b import b

a = 1

x = a + b

print(x)

# sub_b.py

from sub_a import a

b = a + 1

运行:

python module_a.py

Traceback (most recent call last):

File ".\main.py", line 1, in

from sub_a import x

File "~\test\sub_a.py", line 1, in

from sub_b import b

File "~\test\sub_b.py", line 1, in

from sub_a import a

ImportError: cannot import name 'a'

由main.py进入sub_a.py 中执行from sub_b import b语句,在这里程序进入sub_b.py中执行,'sub_a.py'程序暂停执行,此时需要在sub_b.py使用的sub_a.py 中的 a = 1 变量还没有生成,因此出现了上述错误。

要避免错误,要保证在导入模块中内容时,此内容在程序执行到此处时已定义。

module_a.py 改为:

a = 1

from sub_b import b

x = a + b

Flask 中的实际示例:

# app.py

from flask_mongoengine import MongoEngine

# 导入

from .views.main import main as main_blueprint

# 定义

db = MongoEngine()

# 使用

app.register_blueprint(main_blueprint)

# views.main.py

# 导入

from user import User

# 使用

Users.objects()

# users.py

# 导入

from app import db

# 使用

class Users(db.Document):

id = db.StringField(primary_key=True)

name = db.StringField(required=True)

app.py 文件改为:

# app.py

from flask_mongoengine import MongoEngine

# 定义

db = MongoEngine()

# 导入

from .views.main import main as main_blueprint

# 使用

app.register_blueprint(main_blueprint)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值