执行pip install -r requirements.txt后运行Python脚本仍报Module Not Found问题
错误原因
- 环境不匹配:系统中
pip和python绑定的不是同一个Python版本。大部分操作系统默认会同时预装Python2、Python3两个版本,很多时候pip对应Python2的包管理器,python却调用了Python3的解释器,反之也有可能;如果本地配置了虚拟环境,也可能出现脚本执行时未激活虚拟环境,安装和运行分属不同环境的情况。 - 安装未成功:全局安装时没有权限,导致pip安装flask被系统拦截,实际依赖并没有写入对应环境的包目录,执行安装命令时的报错可能被忽略。
- 路径错误:执行
start.sh时的工作目录下不存在requirements.txt文件,pip没有读到依赖列表,全程没有安装任何包。
解决方法
1. 统一环境调用
优先明确指定Python版本执行,避免默认绑定混乱,修改start.sh内容如下:
pip3 install -r requirements.txt python3 api/api.py
如果使用虚拟环境,需要先激活虚拟环境再执行后续命令,示例:
# 替换为你的虚拟环境激活路径 source ./venv/bin/activate pip install -r requirements.txt python api/api.py
2. 解决安装权限问题
如果是在全局Python环境下安装,添加--user参数使用用户级安装,避免权限拦截:
pip3 install --user -r requirements.txt
3. 调试校验执行过程
如果修改后仍然报错,可以在start.sh中添加调试命令,定位具体问题:
# 输出当前工作目录,确认requirements.txt位于该目录下 pwd # 输出pip、python对应的版本和绑定路径,确认二者属于同一环境 pip3 --version python3 --version # 执行依赖安装 pip3 install -r requirements.txt # 输出已安装的flask版本,确认安装成功 pip3 list | grep flask # 启动服务 python3 api/api.py
如果校验发现pip3和python3绑定路径前缀不一致,可以直接写全路径调用,确保二者属于同一环境,比如/usr/local/bin/pip3对应/usr/local/bin/python3。
内容的提问来源于stack exchange,提问作者Cybernetic
相关产品推荐
相关产品推荐

