“在没有已知父包的情况下尝试相对导入”再次出现

问题描述 投票:0回答:1

我是另一个在 Python 导入方面苦苦挣扎的用户。 这是我的项目结构:

Project/
|-- __init__.py
|-- utils/
|   |-- __init__.py
|   |-- utils.py
|
|-- app/
|   |-- main.py

main.py:

from .utils import utils

导致错误:“ImportError:尝试在没有已知父包的情况下进行相对导入”。

在 main.py 之上添加:

import sys
sys.path.append('.')

解决了问题,但我的意思是......

为什么导入在 python 中如此混乱哈哈?

我也试过:

from utils import utils
,但是:“ModuleNotFoundError:没有名为'utils'的模块”。

python
1个回答
0
投票

你应该使用绝对导入,你必须指定导入模块或包的完整路径,所以对于你的

main.py
它将是:

# main.py
from utils import utils

如果这不起作用,请检查项目的父目录是否在您的 Python 路径中,您可以使用

export PYTHONPATH=$PYTHONPATH:/path/to/parent_directory_of_Project
临时执行此操作。您还可以选择其他选项,例如将项目转换为包,但绝对导入通常是最好的。

© www.soinside.com 2019 - 2024. All rights reserved.