无法从我的自定义 python 包导入。 ModuleNotFoundError:没有名为“a_python_file_inside_my_custom_module”的模块

问题描述 投票:0回答:1

我正在尝试按照 本教程构建一个 python 包。

所以我创建了一个基本文件夹,然后是一个模块文件夹,然后在其中放置了文件starting_template.py,其中包含函数

load_img
和一个
__init__.py
文件,其内容几乎是

from starting_template import load_img
print("loaded!")

如果我手动运行

__init__.py
,它会工作而不会显示任何错误,它会打印“已加载!”。

这就是目录树:

我已经通过运行构建了包

python setup.py sdist bdist_wheel

在基本目录中,然后我通过运行将包上传到我的 pypi 帐户上

twine upload dist/opencv_auxiliary_for_vscode-0.0.2*

其中

0.0.2
是发行版的版本号,
最后通过运行安装模块

pip install opencv_auxiliary_for_vscode==0.0.2

包已上传这里
这是一段蹩脚的代码,但它只是通过构建 python 包的过程来进行训练。

然后,在一个python文件中,我编写了导入语句

from opencv_auxiliary_for_vscode import load_img

但是当我运行它时,我收到错误

ModuleNotFoundError: No module named 'starting_template'

我也尝试过导入

from opencv_auxiliary_for_vscode.starting_template import load_img

但它不起作用。

我可能做错了什么?

python package init python-packaging modulenotfounderror
1个回答
0
投票

正如@h4z3所示,我必须将

__init__.py
的内容从

更改为
from starting_template import load_img
print("loaded!")

from .starting_template import load_img  # with the dot
print("loaded!")

以表明它是本地进口的。

当您没有点时,它会尝试在中查找

starting_template
标准和已安装的软件包。

它(运行

__init__.py
)有效 之前,因为您将代码作为代码运行,而不是作为模块运行,而当前 目录始终添加到 PATH

© www.soinside.com 2019 - 2024. All rights reserved.