Python Pylance未解析导入自由_init__;.py公开的类 问题
我正在更新一个Python库以使用Python的现代版本(方程式库),从模块导入时Pylance出现问题。库的基表单也有此问题,但仅供参考,以下是我的fork: 正如库所描述的,您应该能够像这样导入Python Pylance未解析导入自由_init__;.py公开的类 问题,python,python-3.x,module,python-module,Python,Python 3.x,Module,Python Module,我正在更新一个Python库以使用Python的现代版本(方程式库),从模块导入时Pylance出现问题。库的基表单也有此问题,但仅供参考,以下是我的fork: 正如库所描述的,您应该能够像这样导入表达式类: 从方程导入表达式 e=表达式(“sin(x+y^2)”) 此代码有效,但Pylance将给出以下错误: "Expression" is unknown import symbol Pylance(reportGeneralTypeIssues) 如果我按如下方式导入
表达式
类:
从方程导入表达式
e=表达式(“sin(x+y^2)”)
此代码有效,但Pylance将给出以下错误:
"Expression" is unknown import symbol Pylance(reportGeneralTypeIssues)
如果我按如下方式导入代码,我不会收到错误,并且可以得到类型提示
来自等式.core导入表达式
我的理解
我大致理解了这个问题——如下面的文件结构所示,Equation.core导入表达式中的可以正常工作。我还了解到,\uuuu init\uuuu.py
将表达式
类公开给模块的顶层。(我仍然不完全了解这个部分是如何工作的,我似乎找不到合适的页面/章节来详细介绍它。)
方程
├─ __初始值
├─ _info.py
├─ core.py#包含表达式()
├─ 方程u base.py
├─ 方程_scipy.py
├─ 类似的.py
└─ util.py
虽然我很确定我可以通过编写存根(*.pyi
)文件来解决这个问题,但(对我来说)为我已经可以直接访问的类创建存根文件似乎是多余的;为什么我需要重新定义已经存在的东西?然而,我也可能不完全理解存根文件/模块导入是如何工作的,这是正确的方法
我相信这个问题以前已经解决过,但我认为我使用了错误的术语。我遗漏了什么?在\uu init\uuuuuuuuupy
中,我相信您正在执行相对导入:
try:
from Equation.core import Expression
except ImportError:
from core import Expression
在这里执行相对导入的正确方法是将
放在core
前面,就像这样.core
例如:
try:
from Equation.core import Expression
except ImportError:
from .core import Expression
当我尝试它时,它修复了派伦斯
规格参考:这就解决了它!谢谢该代码来自原始库。我不知道它应该做什么,但当然,它应该是相对重要的,这是完全有道理的。