我正在尝试按照 本教程构建一个 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
但它不起作用。
我可能做错了什么?
正如@h4z3所示,我必须将
__init__.py
的内容从更改为
from starting_template import load_img
print("loaded!")
到
from .starting_template import load_img # with the dot
print("loaded!")
以表明它是本地进口的。
当您没有点时,它会尝试在中查找
标准和已安装的软件包。starting_template
它(运行
)有效 之前,因为您将代码作为代码运行,而不是作为模块运行,而当前 目录始终添加到 PATH__init__.py