I have the following problem with my project, help me please! Here is the structure of my package:
/pkg
/pkg/__init__.py
/pkg/sub1/__init__.py
/pkg/sub2/__init__.py
/pkg/sub1/foo1.py
/pkg/sub2/foo2.py
Here is implementation of foo1.py:
from ..sub2 import foo2
def f():
print("Hello!")
When I run foo1 I get error: ValueError: attempted relative import beyond top-level package.
I can solve it doing the following adjustment:
import sys
import os
sys.path.append(os.path.abspath(os.path.pardir))
from sub2 import foo2
def f():
print("Hello!")
But I wonder if there is a way to do it without importing sys and appending parent directory in it.
I heard that if I had .py file '/pkg/start.py' for example which called my foo1 module, then two dots would work. However, is there any way to call foo2 from foo1 directly?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…