Python无法从src/目录导入

3

我有一个这样的项目结构:

root-project/
    src/
        utils/
            file_check.py
        main.py
        type_aliases.py
    ...

src/utils/file_check.py 文件中,我从 src/type_aliases.py 中导入了一些东西,但我总是遇到一个 ModuleNotFound 异常。以下是我尝试过的方法:
from src.type_aliases import ...

我还删除了src

from type_aliases import ...

以下是异常情况:

ModuleNotFoundError: No module named 'src'

第二个:
ModuleNotFoundError: No module named 'type_aliases'

我将文件通过root-project/目录运行,但是我也切换到了src/目录,但仍然出现异常。

我还检查了sys.path变量并添加了src/目录,但我仍然得到错误提示:

import sys

sys.path.append("/home/eastern-skill7173/dev/python/root-project/src/")

from src.type_aliases import ...

仍然有错误可见


1
Python的包需要一个__init__.py文件,文档中详细介绍 - Jared Smith
@JaredSmith:“init.py”文件是必需的,以便Python将包含该文件的目录视为包。src/目录本身不是一个包,我总是从src/目录引用某些内容,但从未直接导入它。 - Omid Ketabollahi
from foo.bar import baz 语法意味着你正在从包 foo 中的模块 bar 导入 baz。因此,如果您想以这种方式导入东西,那就意味着将 src 视为一个包。如果这不是您想要的,请适当编辑您的问题。目前还不清楚为什么要以这种方式组织项目目录,这不是 Python 项目通常的结构方式 - Jared Smith
@JaredSmith PyCharm是否对virtualenv进行了某些操作?因为当我使用PyCharm时,这种语法和结构没有引发任何错误。 - Omid Ketabollahi
1
我有同样的问题,而且我确实在src/文件夹中有__init__.py文件。 - João Victor
1个回答

1
当你将src目录添加到sys.path中时,在导入期间会在该目录中搜索模块。因此,你可以直接通过它们的名称导入模块:
import sys

sys.path.append("/path/to/src")

import type_aliases

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接