我一直在处理Python的相对导入问题。
我的项目结构如下:
root_dir
├── main.py
├── Pipfile
├── Pipfile.lock
├── unit_tests
│ ├── __init__.py
│ ├── test_first.py
│ └── test_second.py
└── my_package
├── __init__.py
├── first.py
├── second.py
└── third.py
我想从位于
my_package
的文件中导入一组函数到test_first.py
中。根据官方文档,语法如下:
from ..my_package import first
当我这样做时,会出现以下异常:
Traceback (most recent call last):
File "/home/user/dev/root_dir/my_package/unit_tests/first.py", line 8, in <module>
from ..my_package import first
ImportError: attempted relative import with no known parent package
我也尝试使用以下语法导入文件:
from root_dir.my_package import first
当我这样做时,我会得到以下异常:
ModuleNotFoundError: No module named 'root_dir'
需要强调的是,我正在使用 pipenv
来处理虚拟环境。
你有任何想法为什么会发生这种情况吗?
谢谢。