问题:
我有一个执行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
未定义。
使用默认版本,我的脚本以:#!/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
本案中的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的了解非常有限。
答案 0 :(得分:1)
据我所知,我的Python脚本遇到了类似问题,最后我用
解决了这个问题python xyz.py
而不是
./xyz.py
不幸的是我无法解释为什么它以这种方式起作用,而不是另一种方式,但在我的情况下它解决了这个问题。