记录几个搭建Jenkins linux slave的时候python脚本调用问题。
一、.Jenkins运行python时提示import error
1、环境:Ubuntu Server 64 ,版本16.04 TLS,已安装python3(3.5.2)
2、python项目中有import xlrd等模块,已提前pip install这些模块,在终端直接进入python3,import时候没有报错
3、Jenkins中配置从git上拉取源码,定时构建,构建方式是shell执行:python3 run_all.py
4、构建时候报错如下图:
原因:
还是配置的关系。。。应该是在非root用户下pip安装的模块,用这个用户执行是可以的,切到其他用户就不行了,而Jenkins中设置的是root启动,所以报了模块不存在
PS:本人遇到的问题与上述描述一致,上述引用自:https://blog.****.net/u012928160/article/details/81132558
二、Jenkins构建Python文件时,总是提示“no module named xxx” ,但通过IDE运行却能正常运行
1、产生原因:
IDE运行时,会搜索全部相关的模块;而通过cmd命令运行,或者Jenkins来配置时,则只会搜索当前目录下的模块。
2、解决方法:
- 若是在电脑中通过cmd来运行的话,需要配置系统环境变量,PYTHONPATH,值为当前项目的目录
比如,项目是在D盘下的一个文件夹下,目录为:D:\workspace\infonews-test-appium\project-name,则系统变量的值为该目录+项目名。
- 通过Jenkins来构建python文件时,则需要配置Jenkins的环境变量,PYTHONPATH,值应当为Jenkins下该job的目录。
比如,该job的工作空间在C盘下,目录为:C:\Program Files (x86)\Jenkins\workspace\apptest,最后‘apptest’则为job名,在Jenkins的系统设置中添加环境变量即可,值为:C:\Program Files (x86)\Jenkins\workspace\apptest\project-name。如下图
如上图配置完成之后,再构建项目里面的python文件,则不会报找不到模块的错误了。
PS:本人遇到问题与上述一致。 上述取自:https://blog.****.net/zy_1107615451/article/details/81133721
但是解决方法不同,可以在构建时加入pathonpath:
三、问题3:配置好oracle数据库(instantclient12),相关配置也都配置好了,在linux上执行脚本调用数据库正常,但是从Jenkins上调用,总是提示连不上补数据。
原因:从Jenkins上调用不会执行source etc/profile ? 导致配置不会生效。 目前具体真实原因还没有找到,应该也是与linux登陆用户有关,linux配置oracle相关ORCALE_HOME用的是root用户, Jenkins上调用连接用的是deploy用户,配置的文件是否没有对deploy生效? 对linux用户组的权限相关的东西不是很熟悉,待研究。
目前解决方法:如图,先进行source etc/profile (配置配在etc/profile里面)
四、问题4:windows (win10)作为slave,配置好oracle数据库(instantclient12),相关配置也都配置好了,在windows 上执行脚本调用数据库正常,但是从Jenkins上调用,总是提示连不上补数据。
配置了win7和win10, 有一台可以,有一台不行,目前还不清楚原因。 待继续找问题分析。
windows用的是JNLP Agent连接方式,不清楚是否也是与用户挂钩?!?!?