簡體   English   中英

Python:嘗試從文件導入模塊時出現“ModuleNotFoundError”

[英]Python: 'ModuleNotFoundError' when trying to import module from files

我想從test.py訪問config/cache.py而且,我需要像從config/env.pydatabase/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM