我正在尝试运行位于'/home/modules/module.py'
python脚本由Jenkins运行,位于'/home/user_name/scripts/script.py'
由于Jenkins主目录是'/ var / lib / jenkins',我如何导入我的模块?
我尝试将以下内容添加到python脚本中:
import sys
sys.path.insert(0,'/home/modules') """also /home/modules/"""
import module
但我仍然收到错误:
ImportError: No module named
我在Ubuntu 14.04和Python 2.7中运行所有内容
修改
我改变了Jenkins这样的用户目录:
root@dwh-01:~$ usermod -m -d /home/jenkins jenkins
并修改了JENKINS_HOME=/home/jenkins
/etc/default/jenkins
我想我可以使用它,但现在问题是,如果我登录jenkins shell并执行:
jenkins@dwh-01:/$ cd
bash: cd: jenkins/: No such file or directory
cd
命令的行为是否应该指引我/home/jenkins/
?
如果我在/home/
中重复同样的事情,那么它会起作用。
如果我尝试启动jenkins,它会给我:
Starting Jenkins Continuous Integration Server jenkins
No directory, logging in with HOME=/
修改-2:
用户jenkins home dir错误已修复,我只是确保用户的主目录是/ home / jenkins使用usermod -d /home/jenkins jenkins
我离导入模块更近了一步,但是仍然有问题在jenkins主目录之外走了一步。
答案 0 :(得分:1)
您应该有两个选项可以将module
导入到您的代码中。
选项1
import sys
sys.path.append('/home/modules')
import module
选项2
import importlib.machinery
importlib.machinery.SourceFileLoader('module', '/home/modules').load_module()
如果这些都不起作用,希望他们至少能指出你和其他人正确的方向。
答案 1 :(得分:0)
好吧终于明白了。
我所做的是将/etc/default/jenkins
文件中的变量 JENKINS_USER 和 JENKINS_GROUP 更改为jenkins用户文件夹之外所需的用户({{1}之外}})。
这样,Jenkins运行的脚本将像我指定的选定用户一样运行。
之后,我意识到在Jenkins中,即使工作目录为/var/lib/jenkins
,也可以从“ / ”调用脚本和文件
所以诀窍是:
- 在jenkins主目录之外访问脚本
- 从绝对路径导入模块。