Jenkins:将我的Python模块放置在PYTHONPATH上

2024-04-25 09:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Jenkins测试我开发的Python模块^{}。但是,我会遇到如下错误:

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/workspace/中,所以目录甚至没有python找到它的正确名称。

编辑:

python模块^{}是一个git存储库,我已经将jenkins作业配置为监视和签出。


Tags: 模块infrompyimportliblinejobs
3条回答

结果我只需要按照this question的答案,就可以让詹金斯将我的repo克隆到一个子目录中。由于Jenkins运行构建workspace,因此它会找到包。

当我第一次这样做时,它以某种方式创建了nodepy/nodepy/nodepy/…的无限递归。。。目录。当我离开工作区后,这个问题就消失了。

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

例如

import sys
import os
# jenkins exposes the workspace directory through env.
sys.path.append(os.environ['WORKSPACE'])
import nodepy

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

export PYTHONPATH=$WORKSPACE:$PYTHONPATH

包裹问题

/var/lib/jenkins/jobs/NodePy/workspace/convergence.py

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

/var/lib/jenkins/jobs/NodePy/workspace/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/rk.py

/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

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

你的工作区将会是

/var/lib/jenkins/jobs/NodePy/workspace/

您不需要更改工作区目录,它是根据您的作业名称(NodePy)和jenkins配置设置的,您只需要在工作区中创建nodepy目录,然后将文件放到那里。您可以change your jenkins job configuration让它签出正确子目录中的gitrepo nodepy,也可以自己移动文件:

mkdir .nodepy
# .nodepy is hidden, * doesn't capture hidden files.
mv * .nodepy
mv .nodepy nodepy

作为测试过程的一部分,您应该安装nodepy。Jenkins和其他测试驱动开发工具需要能够在安装的代码更改时更新它(以及验证安装过程是否正常工作),正确的方法是使用.pth链接或在签出后安装它。如果只想使用github中的签出存储库,可以从workspace目录插入以下shell命令:

pip install -e ./nodepy

相关问题 更多 >