![](/img/trans.png)
[英]Python: 'ModuleNotFoundError' when trying to import module from the same package
[英]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
和inits文件是這樣的:
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
,這是一個簡單的 python list
。
import sys
sys.append('.../projects')
from modules.config import env
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.