from ..box_utils import decode, nms
此行给出错误
ImportError:尝试在没有已知父包的情况下进行相对导入
这个错误是什么以及如何解决这个错误?
显然,
box_utils.py
不是包的一部分。您仍然可以导入此文件中定义的函数,但前提是尝试导入这些函数的 python 脚本与 box_utils.py
位于同一目录中,请参阅 这个答案。
注意:就我而言,我通过带有一个句点的 import 语句偶然发现了此错误,如下所示:
from .foo import foo
。然而,这种语法告诉 Python
foo.py
是包的一部分,但事实并非如此。当我删除句号后,错误消失了。
script.py
,则可以从根目录访问它。例如:如果您的程序是结构化的...:
/alpha
/beta
/delta
/gamma
/epsilon
script.py
/zeta
...然后可以通过以下方式调用epsilon
目录中的脚本:
from alpha.gamma.epsilon import script
export PYTHONPATH=$PYTHONPATH:<root module path>
如果您不确定根模块路径是什么,只需cd
进入程序的顶层并在bash中使用
pwd
命令。
package
|--__init__.py
|--foo.py
|--bar.py
bar.py
from .foo import func
...
如果有人遇到与 from .foo import func
完全相同的错误。那是因为你忘记打包了。所以你只需要在
__init__.py
目录中创建
package
。