PyDev对两个变量中一个的导入显示未定义变量

1 投票
4 回答
3395 浏览
提问于 2025-04-17 19:44

问题

我有以下的结构:

home.py
logic/brains/databeam.py

databeam.py 文件里,我有:

engine  = create_engine(databaseSettings(), pool_size = 20, max_overflow = 0)
Session = sessionmaker(bind = engine)
session = Session()

boom = 'boom'

而在 home.py 里:

from logic.brains.databeam import session, boom

print session
print session.query()
print boom

一切都按预期工作,但在 Eclipse 的 PyDev 中却显示了这个:

红色源代码

错误信息

这种情况发生在……

当我不使用 from logic.brains.databeam import session as session, boom as boom,而是这样做时:

import logic.brains.databeam
session = logic.brains.databeam.session
boom    = logic.brains.databeam.boom

不过这样看起来不太整洁,有没有更好的方法让 PyDev 知道这个导入是有效的?

4 个回答

1

@Lars,我无法在之前的帖子下评论,所以我就在这里留言。如果你遇到“从导入中未定义的变量”这样的错误,就像@Morgan Wilde在查询中遇到的那样,你应该在“未定义”选项下而不是“导入”选项中放置警告。

2

这个脚本非常简单,但在Eclipse 2019-09版本和PyDev 8.1.0.202012051215中出现了相同的错误:

import re
flag = re.ASCII

看起来PyDev没有正确识别通过globals().update()导出的内容。下面的代码是等价的,并且在这种情况下可以正常工作:

import re
flag = re.RegexFlag.ASCII
1

我找到的一个比较合理的解决办法是,在 PyDev 中完全忽略这种错误。我知道这不是完美的解决方案,但这是我遇到的最好的办法。

如何更改这个设置:

pydev 设置更改

撰写回答