尽管文件存在,Python模块仍未导入
我有一个 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及之后的版本中就不需要了。