【发布时间】:2018-12-05 09:32:54
【问题描述】:
我的项目有以下问题,请帮助我!这是我的包的结构:
/pkg
/pkg/__init__.py
/pkg/sub1/__init__.py
/pkg/sub2/__init__.py
/pkg/sub1/foo1.py
/pkg/sub2/foo2.py
这里是 foo1.py 的实现:
from ..sub2 import foo2
def f():
print("Hello!")
当我运行 foo1 时,我收到错误:ValueError:尝试相对导入超出顶级包。
我可以通过以下调整来解决它:
import sys
import os
sys.path.append(os.path.abspath(os.path.pardir))
from sub2 import foo2
def f():
print("Hello!")
但我想知道是否有一种方法可以在不导入 sys 并在其中附加父目录的情况下做到这一点。
我听说如果我有 .py 文件“/pkg/start.py”,例如它调用了我的 foo1 模块,那么两个点就可以了。但是,有没有办法直接从 foo1 调用 foo2 呢?
【问题讨论】:
标签: python python-3.x python-3.6 sys python-packaging