尝试在没有已知父包的情况下进行相对导入
Attempted relative import with no known parent package
from ..box_utils import decode, nms
这一行给出了错误
ImportError: attempted relative import with no known parent package
这是什么错误以及如何解决这个错误?
显然,box_utils.py
不是包的一部分。您仍然可以导入此文件中定义的函数,但前提是尝试导入这些函数的 python 脚本与 box_utils.py
位于同一目录中,请参阅 this answer.
注意:在我的例子中,我偶然发现了这个带有一个句点的导入语句的错误,如下所示:
from .foo import foo
。但是,此语法告诉 Python foo.py
是包的一部分,但事实并非如此。当我删除句点时,错误消失了。
如果不同的词典包含 script.py
,则可以从根目录访问它。例如:
如果你的程序是结构化的...:[=14=]
/alpha
/beta
/delta
/gamma
/epsilon
script.py
/zeta
...然后 epsilon
目录中的脚本可以通过以下方式调用:
from alpha.gamma.epsilon import script
package
|--__init__.py
|--foo.py
|--bar.py
bar.py
的内容
from .foo import func
...
如果有人对 from .foo import func
得到完全相同的错误。
那是你忘记打包了。所以你只需要在 package
目录中创建 __init__.py
。
from ..box_utils import decode, nms
这一行给出了错误
ImportError: attempted relative import with no known parent package
这是什么错误以及如何解决这个错误?
显然,box_utils.py
不是包的一部分。您仍然可以导入此文件中定义的函数,但前提是尝试导入这些函数的 python 脚本与 box_utils.py
位于同一目录中,请参阅 this answer.
注意:在我的例子中,我偶然发现了这个带有一个句点的导入语句的错误,如下所示:
from .foo import foo
。但是,此语法告诉 Python foo.py
是包的一部分,但事实并非如此。当我删除句点时,错误消失了。
如果不同的词典包含 script.py
,则可以从根目录访问它。例如:
如果你的程序是结构化的...:[=14=]
/alpha
/beta
/delta
/gamma
/epsilon
script.py
/zeta
...然后 epsilon
目录中的脚本可以通过以下方式调用:
from alpha.gamma.epsilon import script
package
|--__init__.py
|--foo.py
|--bar.py
bar.py
from .foo import func
...
如果有人对 from .foo import func
得到完全相同的错误。
那是你忘记打包了。所以你只需要在 package
目录中创建 __init__.py
。