尝试在没有已知父包的情况下进行相对导入[重复]

问题描述 投票:0回答:4
from ..box_utils import decode, nms

此行给出错误

ImportError:尝试在没有已知父包的情况下进行相对导入

这个错误是什么以及如何解决这个错误?

python python-3.x python-import importerror
4个回答
59
投票

显然,

box_utils.py
不是包的一部分。您仍然可以导入此文件中定义的函数,但前提是尝试导入这些函数的 python 脚本与
box_utils.py
位于同一目录中,请参阅 这个答案

注意:就我而言,我通过带有一个句点的 import 语句偶然发现了此错误,如下所示:

from .foo import foo

。然而,这种语法告诉 Python 
foo.py
 是包的一部分,但事实并非如此。当我删除句号后,错误消失了。


23
投票
如果不同的字典包含

script.py

,则可以从根目录访问它。例如:

如果您的程序是结构化的...:

/alpha /beta /delta /gamma /epsilon script.py /zeta
...然后可以通过以下方式调用

epsilon

目录中的脚本:

from alpha.gamma.epsilon import script


编辑: 您可能还需要定义 python 路径:

export PYTHONPATH=$PYTHONPATH:<root module path>
如果您不确定根模块路径是什么,只需

cd

进入程序的顶层并在bash中使用
pwd
命令。


-3
投票
在最新的python版本中,导入它,直接不要使用..和.library 导入你想要的文件。此技术将在子目录中起作用。 如果从父目录导入,则放置该目录的完整路径。


-10
投票
package |--__init__.py |--foo.py |--bar.py

bar.py

的内容

from .foo import func ...
如果有人遇到与 

from .foo import func

 完全相同的错误。

那是因为你忘记打包了。所以你只需要在

__init__.py

 目录中创建 
package

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