大家好。我在这里描述了同样的问题,但在测试中没有。未找到模块
下面的情况是文件夹 D:\repositories\ED。PYTHONPATH 变量设置为 D:\repositories\ED。它有一个elements文件夹,里面有三个文件:element.py、node.py和init .py在.venv文件夹中创建了一个虚拟环境,结果结构如下:\
ED:
.venv
elements:
__init__.py
element.py
node.py
elements.py 文件定义了 Element 类,node.py 文件定义了 Node 类,Node 类继承自 Element 类。尝试在 node.py 中导入 Element 类时,出现未找到模块错误。
from elements.element import Element
class Node(Element):
def __init__(
self,
is_base: bool = False,
elements: Union[list, tuple, tensor] = None
) -> None:
self.is_base = is_base
self.elements = elements
那些。如果您尝试创建 Node 类的对象,如下所示:
from elements.element import Element
class Node(Element):
def __init__(
self,
is_base: bool = False,
elements: Union[list, tuple, tensor] = None
) -> None:
self.is_base = is_base
self.elements = elements
node = Node(name='node', u_nom=220.0)
然后我们得到一个错误
(.venv) PS D:\repositories\ED> & d:/repositories/ED/.venv/Scripts/python.exe d:/repositories/ED/elements/node.py
Traceback (most recent call last):
File "d:\repositories\ED\elements\node.py", line 7, in <module>
from elements.element import Element
ModuleNotFoundError: No module named 'elements'
人们会觉得我对正在发生的事情的本质存在某种根本性的误解。为什么会出现这样的错误?特别感谢您提供指向可以获取有关此主题的知识的地方的链接。谢谢你。
一切,我想我自己想通了。如果我们在不同的模块中工作,但在同一个包中(即在包含init .py 文件的文件夹中)元素,那么应该直接访问包的各个模块,而不需要指定包本身。那些。从另一个模块导入一个类,如下所示:
如果我们在另一个文件夹中工作,那么对元素包的模块的访问已经发生如下: