我有这样的文件结构:
/mypkg
/__init__.py
/apkg
/__init__.py
如何在不使用sys.path 的情况下从/mypkg/apkg/__init__.py 导入/mypkg/__init__.py并在包中。我的意思是:
# I do not want to do this since path is already outside the package.
import sys
sys.path.append('../../')
import mypkg
再次感谢。
答案 0 :(得分:2)
简短的回答是,你不能。您可以从两个位置导入:
sys.path
)的目录中。要从父目录导入,您需要将该目录添加到路径中。
此外,您正在创建各种循环依赖项。我强烈建议你重新考虑你的整体结构,因为有一个模块导入它的“父”并没有多大意义。您需要来自更高级别目录的其他文件这一事实表明,“apkg”中的文件可能与“mypkg”处于同一级别。
回复您的评论:您不导入__init__.py文件。它们就像模块的目录一样,因此您可以利用模块中包含的对象和定义。如果需要,它们还可以在导入时对模块内容执行初始化。 __init__.py文件中不应该包含您想要在另一个脚本中导入的任何代码。