Jenkins Build Giving;没有名为“uuuuuuuuuquot”的模块;执行执行另一个python3脚本的shell脚本时

Jenkins Build Giving;没有名为“uuuuuuuuuquot”的模块;执行执行另一个python3脚本的shell脚本时,python,python-3.x,jenkins,Python,Python 3.x,Jenkins,我试图在shell脚本中运行python3脚本(由jenkins的build函数调用) 以下是我的管道脚本: node { sh label: '', script: '''#!/bin/bash python3 /home/user/test.py'''} 在我的python3脚本中 “导入git” 还有几个模块 我已经测试了我的python3脚本,但没有从Jenkins处触发它,它可以正常工作。但是,如果我在Jenkins上尝试“build”函数,它会在我在python3中导入的所有模块上

我试图在shell脚本中运行python3脚本(由jenkins的build函数调用)

以下是我的管道脚本:

node {
sh label: '', script: '''#!/bin/bash
python3 /home/user/test.py'''}
在我的python3脚本中
“导入git”

还有几个模块

我已经测试了我的python3脚本,但没有从Jenkins处触发它,它可以正常工作。但是,如果我在Jenkins上尝试“build”函数,它会在我在python3中导入的所有模块上显示“No Module named”错误

这是什么原因造成的?我如何修复它?
谢谢

Python对其环境非常敏感。它通常以所谓的方式运行 虚拟的

这意味着在运行代码的环境中,Python已经创建了环境。当您在Jenkins中运行它时,您需要为您正在运行的环境重新下载模块

有关更多信息,请参阅文档:


我希望这对您有所帮助。

当pip为一个用户安装模块时,默认情况下,它不允许其他用户访问该模块


卸载模块,然后在重新运行pip安装之前设置“umask 022”可以解决问题。

这可能与虚拟环境无关。前几天我遇到了类似的情况,创建新环境帮助我解决了问题。所以我认为这是同样的情况。哪个用户在系统上运行Jenkins?是您手动测试的同一用户吗?我的猜测是否定的。因为python模块可以(并且在大多数情况下应该)按用户安装,所以这样做不是一个好的测试。不管怎样,您应该将您的自动化编写为更加防弹,而不是相信您的Jenkins节点配置正确。在python3可用的情况下进行烘焙可能是不错的,但是运行
sh脚本:“pip install-r requirements.txt”
(以及一个好的需求文件)是一个好主意。您可以在一个测试管道中测试这一点,该管道读取
节点{sh'whoami'}
,然后以该用户的身份登录并运行test.py