首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins:把我的Python模块放在PYTHONPATH上

Jenkins:把我的Python模块放在PYTHONPATH上
EN

Stack Overflow用户
提问于 2012-10-21 07:19:42
回答 4查看 30.7K关注 0票数 4

我正在使用Jenkins来测试我开发的Python模块nodepy。但是,我会遇到以下错误:

代码语言:javascript
复制
File "/var/lib/jenkins/jobs/NodePy/workspace/convergence.py", line 6, in workspace.convergence
Failed example:
    from nodepy import rk, convergence, ivp
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/doctest.py", line 1289, in __run
        compileflags, 1) in test.globs
      File "<doctest workspace.convergence[0]>", line 1, in <module>
        from nodepy import rk, convergence, ivp
    ImportError: No module named nodepy

如何在Jenkins中设置PYTHONPATH (以便我的模块是重要的)?

我甚至不确定应该添加哪个目录。似乎Jenkins将内容放在jenkins/jobs/nodepy/工作区/中,因此目录甚至没有正确的python名称来查找它。

编辑:

Python模块nodepy是一个git存储库,我已经将我的jenkins任务配置为监视和签出。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-22 13:59:47

事实证明,我所需要做的就是跟踪this question的答案,以便让Jenkins将我的repo克隆到子目录workspace/nodepy/中。因为Jenkins在workspace中运行构建,所以它会找到包。

当我第一次这样做的时候,它以某种方式创造了一个无限的节点递归/.目录。在我清理出工作区后,这个问题就消失了。

票数 0
EN

Stack Overflow用户

发布于 2012-10-21 08:07:11

  • 要么将其添加到参数化的作业参数列表中(然后填写它,要么提供默认值)
  • 或者,如果您对jenkins具有管理员访问权限,可以将其添加到系统变量中(转到Manage Jenkins,然后是System Configuration)
  • 或者在脚本中使用sys.path.append

例如:

代码语言:javascript
复制
import sys
import os
# jenkins exposes the workspace directory through env.
sys.path.append(os.environ['WORKSPACE'])
import nodepy

或者,在jenkins构建配置中,使用(如果是shell脚本)配置构建步骤:

代码语言:javascript
复制
export PYTHONPATH=$WORKSPACE:$PYTHONPATH

包问题

代码语言:javascript
复制
/var/lib/jenkins/jobs/NodePy/workspace/convergence.py

这是一个问题,因为没有nodepy目录。因此,即使您放置了正确的syspath,您的包结构也将不正确。您可以做的是更改工作区的外观,从:

代码语言:javascript
复制
/var/lib/jenkins/jobs/NodePy/workspace/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/rk.py

代码语言:javascript
复制
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/__init__.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/nodepy/rk.py

编辑:在正确的子目录中提取文件

你的工作空间将会是

代码语言:javascript
复制
/var/lib/jenkins/jobs/NodePy/workspace/

您不需要更改工作区目录,它是根据作业名称(NodePy)和jenkins配置键确定的,您只需要在工作区的中创建nodepy目录,并将文件放在那里。您可以选择change your jenkins job configuration并让它在正确的子目录中签出git repo nodepy,或者您可以自己移动文件:

代码语言:javascript
复制
mkdir .nodepy
# .nodepy is hidden, * doesn't capture hidden files.
mv * .nodepy
mv .nodepy nodepy
票数 10
EN

Stack Overflow用户

发布于 2021-01-27 06:52:29

在python3安装过程中,请确保安装是针对所有用户的。

为所有用户定制安装->下一步->安装

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12995809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档