我想从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