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

Python本地模块导入报错(ImportError: No module named lib.redisdb)解决咨询

解决Python模块导入错误:No module named lib.redisdb

这个问题的核心原因是Python的模块搜索路径里没有包含你的server/目录。当你直接运行my_first_script.py时,Python只会把脚本所在的server/scripts/目录加入搜索路径,但lib和config都在server/下,所以找不到这些模块。下面给你几个简单的解决办法:

方法1:用模块方式运行脚本(推荐)

直接在项目的根目录(也就是server/的上级目录)运行这个命令:

python -m server.scripts.my_first_script

这种方式会让Python把server/目录识别为一个包,自动处理模块的导入路径,不需要额外配置环境变量或者修改代码。

方法2:临时设置PYTHONPATH环境变量

在终端里先把server/目录加入PYTHONPATH,再运行脚本:

Linux/macOS

export PYTHONPATH=/full/path/to/your/server:$PYTHONPATH
python server/scripts/my_first_script.py

Windows(CMD)

set PYTHONPATH=C:\full\path\to\your\server;%PYTHONPATH%
python server\scripts\my_first_script.py

注意替换成你实际的server/目录路径,这种方式是临时生效的,关闭终端后就会失效。

方法3:在脚本中手动添加路径

在my_first_script.py的最顶部添加这段代码,把server/目录加入Python的搜索路径:

import sys
import os

# 获取当前脚本所在目录的父目录的父目录(也就是server/目录)
root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, root_dir)

添加完之后,再保留你原来的导入代码,这样运行脚本时就能找到lib和config模块了。

方法4:使用相对导入(仅适用于包内运行)

把你的导入语句改成相对导入的形式:

import pickle
from ...lib.redisdb import r
import re
from ...config import application as appconf

但这种方式不能直接运行脚本,必须用方法1中的python -m server.scripts.my_first_script命令来运行,否则会抛出ValueError: attempted relative import beyond top-level package的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:49:07