我想從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 *
uj5u.com熱心網友回復:
Python 會自動將主腳本所在的檔案夾插入到 中sys.path,這是一個串列,其中包含可以在其中找到包和模塊的檔案夾。
因此,如果test.py在 folder 中project,則該檔案夾將在其中sys.path,然后您可以匯入modules包及其任何子包或模塊。
import module # main package module
from module import config # subpackage config
from module.config import env # module env
(以防萬一,模塊是以 .py 結尾的檔案,而包是一個檔案夾,其中包含一個名為__init__.pyinside的檔案以及可選的子包和/或模塊。)
因此,一種解決方案是將檔案 test.py 移動到 projects
另一種選擇是在匯入之前手動添加檔案夾projects(作為 a str),sys.path這是一個簡單的 python list。
import sys
sys.append('.../projects')
from modules.config import env
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/334148.html
