Python项目无法导入config模块?ModuleNotFoundError报错求助
解决方案
方法一:动态添加主目录到Python路径
在servers/backend/file_i_need_config.py开头添加代码,将主目录动态加入Python的模块搜索路径,无需硬编码路径:
import sys from pathlib import Path # 获取主目录的绝对路径(当前文件的父级父级目录) root_dir = Path(__file__).parent.parent.parent sys.path.append(str(root_dir)) # 现在可正常导入Config from config import Config print(Config.get_property("api_key_for_thing").unwrap())
这种方式代码可移植性强,无论项目放到哪个路径下都能正常运行。
方法二:将主目录转为可导入包并配置环境变量
- 在主
directory目录下创建一个空的__init__.py文件,将主目录标记为Python可识别的包。 - 配置
PYTHONPATH环境变量,把主目录路径加入其中:- Linux/macOS终端执行:
export PYTHONPATH=/绝对路径/到/directory:$PYTHONPATH - Windows cmd执行:
set PYTHONPATH=C:\绝对路径\到\directory;%PYTHONPATH% - Windows PowerShell执行:
$env:PYTHONPATH = "C:\绝对路径\到\directory;$env:PYTHONPATH"
- Linux/macOS终端执行:
- 完成后在
file_i_need_config.py里就能直接用from config import Config导入,无需额外修改代码。
如果不想配置环境变量,也可以用相对导入(注意:此时不能直接单独运行file_i_need_config.py,需以包的形式运行,比如python -m servers.backend.file_i_need_config):
from ...config import Config
方法三:改用环境变量传递密钥
直接把API密钥放到环境变量里,绕开模块导入问题:
- 修改
config.py,让它从环境变量读取密钥:import os class Config: @staticmethod def get_property(key): value = os.getenv(key.upper()) # 可根据原有unwrap()逻辑调整返回值格式 return value if value else None - 运行脚本前设置环境变量:
- Linux/macOS:
export API_KEY_FOR_THING="你的密钥内容" - Windows:
set API_KEY_FOR_THING="你的密钥内容"
- Linux/macOS:
- 之后无论哪个文件都能通过Config类读取密钥,或直接读取环境变量,完全不用纠结导入路径。
内容的提问来源于stack exchange,提问作者jd_h2003
相关产品推荐
相关产品推荐

