【发布时间】:2021-01-28 07:39:44
【问题描述】:
我遇到一个奇怪的错误,当我尝试从子文件夹中的文件导入一个类时,我得到一个ModuleNotFoundError:
from petri.strategyport.strategy import Strategy
ModuleNotFoundError: No module named 'petri.strategyport'
strategyport 文件夹不包含__init__.py,我使用的是 python 3.8。此外,petri 模块可以在其他环境中工作(当我遇到错误时,我试图从 NixOS shell 运行它)。 sys.path 包含 petri 模块的根文件夹。谁能告诉我这里可能出了什么问题?看起来很神秘。
在此先感谢您的帮助,也感谢活动结束后的帮助。
编辑:这里的文件结构如下所示:
petri/
__init__.py
/strategyport/
strategy.py
__init__.py 的位置有 from petri.strategyport.strategy import Strategy
进一步的编辑:
在这个包中实际上还有许多其他的导入,例如from petri.asset import Asset,等等。所有单级(即它们在根目录级别,而不是在它们自己的子文件夹中)都可以工作,而多级都不能。因此,这里似乎存在一些基本问题,python 将子文件夹误认为模块。将导入语法从 from petri.xxxx.yyyy import zzzz 切换到 from xxxx.yyyy import zzzz 没有任何区别。
【问题讨论】:
-
请在您的问题中画出文件夹树
标签: python python-import nix