Python:尝试从文件导入模块时'ModuleNotFoundError'



我想从test.py访问配置/缓存.py并且,我需要内部访问,例如从config/env.py数据库/模块/游戏.py但我总是收到此错误:

ModuleNotFoundError: No module named 'modules'

我的项目树:

project
├─ modules
│  ├─ cache
│  │  ├─ playtime.py
│  │  └─ __init__.py
│  ├─ config
│  │  ├─ cache.py
│  │  ├─ database.py
│  │  ├─ env.py
│  │  ├─ yaml.py
│  │  └─ __init__.py
│  ├─ database
│  │  └─ models
│  │     ├─ game.py
│  │     ├─ member.py
│  │     ├─ room.py
│  │     ├─ wiki.py
│  │     └─ __init__.py
│  ├─ room
│  ├─ utils
│  │  ├─ functions.py
│  │  ├─ logger.py
│  │  └─ __init__.py
│  └─ __init__.py
├─ run.py
└─ test
└─ test.py

初始化文件是这样的:

from .config import *
from .utils import *
from .database import *
from .cache import *

Python 会自动将主脚本所在的文件夹插入到sys.path中,这是一个包含用于查找包和模块的文件夹的列表。

因此,如果test.py在文件夹project中,该文件夹将处于sys.path中,然后您可以导入modules包及其任何子包或模块。

import module  # main package module
from module import config   # subpackage config
from module.config import env  # module env

(以防万一,模块是以 .py 结尾的文件,包是一个文件夹,里面有一个名为__init__.py的文件,可以选择子包和/或模块。

因此,一种解决方案是将文件 test.py 移动到projects

另一种选择是在导入之前手动将文件夹projects(作为str)添加到sys.path这是一个简单的pythonlist

import sys
sys.append('.../projects')
from modules.config import env