尽管文件存在,Python模块仍未导入

0 投票
1 回答
27 浏览
提问于 2025-04-13 01:30

我有一个 python 项目。我为这个项目激活了 virtualenv,并安装了 requirements.txt 中的依赖。

这是我的文件和目录结构:

.
├── app
│   ├── app.py
│   ├── modules
│   │   ├── __pycache__
│   │   ├── foo.py
│   │   ├── settings.py
│   └── requirements.txt

foo.py 中,我进行了如下导入:

import settings

VSCode 没有报错(而在其他错误的导入尝试中,它是有报错的)。

在这里输入图片描述

当我尝试运行程序时:

▶ python app/app.py 
Traceback (most recent call last):
  File "/path/to/project/app/app.py", line 1, in <module>
    from modules import foo
  File "/path/to/project/app/modules/foo.py", line 14, in <module>
    import settings
ModuleNotFoundError: No module named 'settings'
(.venv) 

我缺少了什么呢?

1 个回答

1

Python模块默认情况下并不能相对导入。

foo.py 文件中,你可以这样导入 `settings`:

from . import settings
# ...

@pkaramol:在旧版本的Python中,必须在 modules 文件夹里创建一个 __init__.py 文件,才能使用这种导入方式,但在Python 3.10及之后的版本中就不需要了。

撰写回答