如何为Jenkins设置Python目录结构?

时间:2018-04-24 18:18:34

标签: python jenkins

我有一个正在研究的python项目,我正在尝试用pytest和Jenkins实现测试。

我的目录结构如下:

project/
  src/
    __init__.py
    hello.py
    input.py
    person.py
  test/
    test_hello.py

当我从项目目录运行pytest时,它工作正常。但是当我使用Jenkins时,我不断收到以下错误:

[-1_10-finish-basic-ci-setup-IIB3G6YENVYIQDST5MPMDBNVOZLYD6VSLP5ZCT6VUVQSNZJKGYEA] Running shell script
+ python src/hello.py true
Traceback (most recent call last):
  File "src/hello.py", line 1, in <module>
    import src.person as person
ImportError: No module named 'src'

我在一个docker容器中运行Jenkins,它会旋转另一个docker容器来测试我的项目。任何人都可以告诉我如何让它识别运行测试的src目录?

1 个答案:

答案 0 :(得分:0)

我不确定我是否已正确识别您的问题(我希望您已经使用Google搜索此错误),但当我尝试使用cron运行我的python脚本时,我遇到了一个非常类似的异常。

我的解决方法是在文件的最开头添加它。因此,当您执行string myString = "{\"Lorem\":" + _config1 + "\",\"Ipsum\":" + _config2 + "\"}"; 时,第一个事情正在运行。在python main.py之后导入其他模块。它基本上将工作目录附加到pythonpath,因此Python可以从哪里运行它。有一些替代解决方案。这很难看,但它非常便携,你只需要复制。

sys.path...

您需要将一定数量的import sys, os def get_abs_dir_for_module(*args): return os.path.join(os.path.dirname(os.path.realpath(__file__)), *args) repo_dir = get_abs_dir_for_module("..", "..") sys.path.append(repo_dir) 传递给此功能。到处玩,让我知道它是否有效。