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

从Jenkins运行Django项目Python脚本时出现ModuleNotFoundError错误

解决Jenkins执行Python脚本时找不到Django模块的问题

问题根源

直接在服务器上运行脚本正常,但Jenkins触发时提示ModuleNotFoundError: No module named 'django',核心原因有两个:

  • Jenkins默认使用jenkins系统用户的环境,和你手动执行时的用户环境(比如root或个人用户)的Python包路径完全不同
  • 你写的Shell脚本里export PYTHONPATH=/lib/python3.9/是错误操作:这个路径是Python标准库目录,不是第三方包(比如Django)的安装路径,而且直接覆盖PYTHONPATH会清空原有包搜索路径,反而导致找不到已安装的模块

解决方法(按推荐程度排序)

方法1:使用虚拟环境(最稳妥)

如果你手动运行时用了虚拟环境,直接在Shell脚本里激活虚拟环境再执行脚本:

#!/bin/bash
# 替换成你实际的虚拟环境路径
source /path/to/your/virtualenv/bin/activate
# 激活后直接用python即可,不用指定版本(虚拟环境里的解释器已关联)
python <full_script_path>/import_mantis.py
# 可选:执行完退出虚拟环境
deactivate

如果没用到虚拟环境,建议先给脚本创建专属虚拟环境,避免依赖冲突。

方法2:指定安装了Django的Python解释器路径

手动执行以下命令,找到你正常运行脚本时用的Python解释器路径:

which python3.9

比如得到输出/home/your_user/.local/bin/python3.9或者/usr/local/bin/python3.9,然后修改Shell脚本:

#!/bin/bash
# 替换成上面得到的实际路径
/home/your_user/.local/bin/python3.9 <full_script_path>/import_mantis.py

方法3:正确添加PYTHONPATH(不推荐,易出问题)

先找到Django所在的site-packages目录:

python3.9 -c "import django; print(django.__file__)"

比如输出/usr/local/lib/python3.9/site-packages/django/__init__.py,那么site-packages路径就是/usr/local/lib/python3.9/site-packages。然后修改脚本,把这个路径追加到PYTHONPATH(不是覆盖):

#!/bin/bash
export PYTHONPATH="$PYTHONPATH:/usr/local/lib/python3.9/site-packages"
python3.9 <full_script_path>/import_mantis.py

验证步骤

可以在Jenkins的Shell执行步骤里先加一行命令,确认Jenkins用户的Python环境里有没有Django:

python3.9 -m pip list | grep django

如果没有输出,说明Jenkins用户的环境确实没装Django,这时候用方法1或方法2最直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:12:41