Python: 'ModuleNotFoundError' 尝试从文件导入模块时
Python: 'ModuleNotFoundError' when trying to import module from files
我想从 test.py 访问 config/cache.py 而且,我需要像从config/env.py 到 database/modules/game.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
的文件,并且可以选择子包 and/or 个模块。)
所以一个解决方案是将文件 test.py 移动到 projects
另一种方法是在导入之前手动将文件夹 projects
(作为 str
)添加到 sys.path
,这是一个简单的 python list
。
import sys
sys.append('.../projects')
from modules.config import env
我想从 test.py 访问 config/cache.py 而且,我需要像从config/env.py 到 database/modules/game.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
的文件,并且可以选择子包 and/or 个模块。)
所以一个解决方案是将文件 test.py 移动到 projects
另一种方法是在导入之前手动将文件夹 projects
(作为 str
)添加到 sys.path
,这是一个简单的 python list
。
import sys
sys.append('.../projects')
from modules.config import env