在Jenkins构建期间无法运行python脚本

时间:2015-02-16 22:02:01

标签: python jenkins

问题:
我有一个执行shell脚本的Jenkins构建步骤。该脚本依次调用执行某些加密功能的python脚本。但是,当构建执行时,我收到以下错误。

Traceback (most recent call last):
  File "./xyz.py", line 4, in <module>
    import rsa
ImportError: No module named 'rsa' 

詹金斯&#39; node有两个版本的python - 2.7(默认),并为它们安装了3.4和rsa。我甚至在奴隶本身上运行了脚本(使用版本3.4)并且它工作正常。

到目前为止我做了什么:
我正在使用EnvInject插件将PYTHONPATH指向正确的位置。没有它,我发现PYTHONPATH未定义。

  • 使用Python 2.7

使用默认版本,我的脚本以:#!/usr/bin/env python
开头 詹金斯输出:

[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content 
PYTHONPATH=/usr/local/lib/python2.7

[EnvInject] - Variables injected successfully.
[demo] $ /bin/sh -xe /tmp/hudson9217742060700174209.sh
+ export PYTHONPATH=/jenkins/workspace/demo:/usr/local/lib/python2.7
+ echo /jenkins/workspace/demo:/usr/local/lib/python2.7
/jenkins/workspace/demo:/usr/local/lib/python2.7
+ ./abc.sh
/usr/bin/env: python: No such file or directory  
  • 使用Python 3.4

本案中的Shebang是#!/usr/bin/env python3
詹金斯输出:

[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content 
PYTHONPATH=/usr/local/lib/python3.4/

[EnvInject] - Variables injected successfully.
[demo] $ /bin/sh -xe /tmp/hudson4592372533933414288.sh
+ export PYTHONPATH=/jenkins/workspace/demo:/usr/local/lib/python3.4/
+ echo /jenkins/workspace/demo:/usr/local/lib/python3.4/
/jenkins/workspace/demo:/usr/local/lib/python3.4/
+ ./abc.sh
Traceback (most recent call last):
  File "./xyz.py", line 4, in <module>
    import rsa
ImportError: No module named 'rsa'  

我甚至尝试在脚本中执行sys.path.append(os.environ['/usr/local/lib/python3.4/dist-packages/rsa']),但问题仍然存在。

任何人都可以帮我解决这个问题吗?谢谢。

P.S.-我对Python的了解非常有限。

1 个答案:

答案 0 :(得分:1)

据我所知,我的Python脚本遇到了类似问题,最后我用

解决了这个问题
python xyz.py

而不是

./xyz.py

不幸的是我无法解释为什么它以这种方式起作用,而不是另一种方式,但在我的情况下它解决了这个问题。