我有以下文件结构:
.
├── main.py
└── modules
├── __init__.py
├── package1
│ ├── __init__.py
│ ├── module1.py
│ ├── module2.py
│ └── __pycache__
│ ├── __init__.cpython-310.pyc
│ └── module1.cpython-310.pyc
├── package2
│ ├── __init__.py
│ ├── module_r.py
│ └── __pycache__
│ ├── __init__.cpython-310.pyc
│ └── module_r.cpython-310.pyc
└── __pycache__
└── __init__.cpython-310.pyc
这是modules/package1/module1.py中的代码:
def func():
print("the function was called")
这是modules/package2/module_r.py中的代码:
from ..package1.module1 import func
func()
另外,这是 main.py 中的代码:
from modules.package2 import module_r
当我使用以下命令执行主文件时:
python3 main.py
我将预期结果打印到终端(“该函数被调用”)但是,当我尝试运行python3 modules/package2/module_r.py
时,我收到此错误:
Traceback (most recent call last):
File "/home/santiago/Documents/test-python-packages/modules/package2/module_r.py", line 1, in <module>
from ..package1.module1 import func
ImportError: attempted relative import with no known parent package
我也尝试过绝对导入和这段代码:
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from modules.package1.module1 import func
但我得到了相同的结果。如何正确导入我的包,以便我可以从主文件导入它们并将它们作为脚本执行?