我创建了一个名为orderbook.py的py文件,其中包含一个名为OrderbookLoader的类。所有内容都在一个名为loaders的目录中。我将该路径添加到ipythonpath中,因此如下所示:/home/ec2-user/SageMaker/research/data_manager/loaders在我的目录中,我还有多个其他文件:

但是,当我转到根目录并尝试执行以下操作时:from loaders.orderbook import OrderbookLoader,它抛出以下错误消息:ModuleNotFoundError: No module named 'loaders.orderbook'; 'loaders' is not a package
但我可以执行以下操作:from loaders import OrderbookLoader,它是loaders.py文件中的一个类。你知道我做错了什么吗?谢谢!
发布于 2020-05-18 21:31:25
这与您的工作目录(未在您的问题中指定)、Python路径(也未指定)和假定的包目录中的文件之间的交互有关。
要使目录成为包,您应该:
Python
sys.path).
__init__.py的文件(正如您所做的那样)。该文件可能为空,或者包含合法的Python代码。这里可能发生的情况是,您将目录loaders本身作为Python路径的一部分。如果您添加了它的父目录(就像您应该做的那样),那么它可能被放在loaders之后。接下来发生的事情是,当Python尝试导入loaders时,它会在loaders目录中导入文件loaders.py,然后在其父目录中找到loaders包目录。这意味着指定给导入机制的loaders引用的是模块,而不是包,这就是您两次import尝试的结果。
将模块放置在包中不是一个好主意,因为它可能会导致您在这里遇到的情况。
https://stackoverflow.com/questions/61870168
复制相似问题