【发布时间】:2021-06-25 03:34:34
【问题描述】:
我有这样的布局:
src
__init__.py
main.py
examples
__init__.py
example_project.py
library
__init__.py
some_library_code.py
example_project.py 使用来自some_library_code.py的代码
我像这样运行example_project.py:***\src>: python examples\example_project.py 并得到ImportError: attempted relative import with no known parent package
我已经阅读了一些关于 SO 的答案,发现我需要一些建设sys.path.append(os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)))
出席example_project.py
我的example_project.py 导入部分如下所示:
import os, sys
sys.path.append(os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)))
from ..library import some_library_code
但这不起作用并显示相同的ImportError
UPD:
如果我将 from ..library ***** 更改为 from library ***** 则它可以工作,但 IDE 无法识别导入的类型并在 import 子句周围显示错误
【问题讨论】:
-
"ImportError: 没有已知父包的尝试相对导入" 通常,您的“父包”将是
src文件夹。您是否尝试过从外部运行程序? -
是的,我运行
example_project,它位于src目录中的examples包中。而本项目使用src/library包 -
@karlknechtel 但即使我从
src/examples目录中运行代码,它仍然会抛出相同的错误 -
不,我是说你应该完全离开
src。