You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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())

这种方式代码可移植性强,无论项目放到哪个路径下都能正常运行。

方法二:将主目录转为可导入包并配置环境变量

  1. 在主directory目录下创建一个空的__init__.py文件,将主目录标记为Python可识别的包。
  2. 配置PYTHONPATH环境变量,把主目录路径加入其中:
    • Linux/macOS终端执行:
      export PYTHONPATH=/绝对路径/到/directory:$PYTHONPATH
      
    • Windows cmd执行:
      set PYTHONPATH=C:\绝对路径\到\directory;%PYTHONPATH%
      
    • Windows PowerShell执行:
      $env:PYTHONPATH = "C:\绝对路径\到\directory;$env:PYTHONPATH"
      
  3. 完成后在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密钥放到环境变量里,绕开模块导入问题:

  1. 修改config.py,让它从环境变量读取密钥:
    import os
    class Config:
        @staticmethod
        def get_property(key):
            value = os.getenv(key.upper())
            # 可根据原有unwrap()逻辑调整返回值格式
            return value if value else None
    
  2. 运行脚本前设置环境变量:
    • Linux/macOS:
      export API_KEY_FOR_THING="你的密钥内容"
      
    • Windows:
      set API_KEY_FOR_THING="你的密钥内容"
      
  3. 之后无论哪个文件都能通过Config类读取密钥,或直接读取环境变量,完全不用纠结导入路径。

内容的提问来源于stack exchange,提问作者jd_h2003

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:40:13