一、.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、构建时候报错如下图:

Python django jenkins 项目 jenkins运行python脚本_运维

原因:

还是配置的关系。。。应该是在非root用户下pip安装的模块,用这个用户执行是可以的,切到其他用户就不行了,而Jenkins中设置的是root启动,所以报了模块不存在

 

PS:本人遇到的问题与上述描述一致,上述引用自:

 

二、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 django jenkins 项目 jenkins运行python脚本_运维_02

如上图配置完成之后,再构建项目里面的python文件,则不会报找不到模块的错误了。

 

PS:本人遇到问题与上述一致。 上述取自:

但是解决方法不同,可以在构建时加入pathonpath:

Python django jenkins 项目 jenkins运行python脚本_Jenkins_03


 

三、问题3:配置好oracle数据库(instantclient12),相关配置也都配置好了,在linux上执行脚本调用数据库正常,但是从Jenkins上调用,总是提示连不上补数据。

原因:从Jenkins上调用不会执行source etc/profile ? 导致配置不会生效。 目前具体真实原因还没有找到,应该也是与linux登陆用户有关,linux配置oracle相关ORCALE_HOME用的是root用户, Jenkins上调用连接用的是deploy用户,配置的文件是否没有对deploy生效?  对linux用户组的权限相关的东西不是很熟悉,待研究。

目前解决方法:如图,先进行source etc/profile (配置配在etc/profile里面

Python django jenkins 项目 jenkins运行python脚本_python_04


 
四、问题4:windows (win10)作为slave,配置好oracle数据库(instantclient12),相关配置也都配置好了,在windows 上执行脚本调用数据库正常,但是从Jenkins上调用,总是提示连不上补数据。

 

配置了win7和win10, 有一台可以,有一台不行,目前还不清楚原因。 待继续找问题分析。

windows用的是JNLP Agent连接方式,不清楚是否也是与用户挂钩?!?!?