ModuleNotFound导入包时出错,但单独运行时出错



我正试图创建一个python包,但导入时遇到了问题。我的代码在运行时可以正常工作,但当我使用诗歌安装包并将其导入另一个脚本时,我会出现ModuleNotFoundError。

我的文件结构如下:

git_repo
|  myapp
|  |--__init__.py
|  |--mainscript.py
|  |--library
|  |  |--__init__.py
|  |  |--module.py

我的文件mainscript.py导入module.py,因为有一些实用程序函数:from library import module

当我执行主脚本时,没问题。但是,当使用poetry install安装myapp并尝试将其导入python shell时:

> python
>>> import myapp.mainscript
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:pathtomainscript.py", line 5, in <module>
from library import module
ModuleNotFoundError: No module named 'library'

有没有一个我不了解进口产品的技工?我必须在__init__.py文件中写些什么吗?

提前感谢的帮助

有一些实用程序函数:from library import module

您想要:

from .library import module

https://docs.python.org/3/reference/import.html#package-相对进口

https://docs.python.org/3/reference/simple_stmts.html#import

https://realpython.com/python-import/#absolute-和相对进口

好的,所以我找到了自己问题的解决方案。

正如J_H所建议的,我尝试了相对导入。在安装和使用程序包时,这是有效的。但在运行主脚本时,我遇到了ImportError: attempted relative import with no known parent package

解决办法是使用绝对进口。现在,这在安装包和运行main脚本时都有效。

# mainscript.py
from myapp.library import module

我还在__init__.py文件中添加了一些导入,以便在安装时方便使用我的包:

# myapp/__init__.py
from . import library
from .mainscript import mainClass

这使我可以执行a = myapp.mainClass()而不是a = myapp.mainscript.mainClass()

最新更新