【问题标题】:[Python]Can't make Travis CI work. PATHs problems[Python]无法让 Travis CI 工作。路径问题
【发布时间】:2017-06-30 19:54:01
【问题描述】:

这是我第一次使用 Travis 和一般的“测试”。 我创建了一些测试,现在我想将它们添加到 Travis,但我遇到了 PATH 问题。

这是我所拥有的:

sheetmaker/
      html_builder.py
      constants.py
      sheetmaker.py
tests/
      test_html_builder.py
      data/
              test_html_constants.py

我设法运行test_html_builder.py 并且测试正在我的电脑上运行。简而言之,这就是我在 test_html_builder.py

中导入内容的方式
sys.path.insert(0, os.path.abspath('..'))
from sheetmaker import html_builder
from data import test_html_constants

这在本地有效,但 Travis CI 说:

  • 从制纸机导入 html_builder
  • ModuleNotFoundError: 没有名为“sheetmaker”的模块

导入东西的正确方法是什么?这里是 github 项目了解更多详情:github project!

提前致谢。

【问题讨论】:

  • 我建议从test_html_builder.py 上面的目录中工作并运行python -m tests.test_html_builder,这将为您提供一个更真实的执行环境,并且可以在本地和 travis-ci 中工作而不会与sys.pathhere's some additional reading about why you should almost always do this
  • 您的制表机目录中需要一个__init__.py
  • @erip 在我的情况下,我的目录中已经有一个 init.py 文件,其中包含我要导入的模块,而 Travis 仍然无法找到它。我会尝试上传一段视频来展示这一点。

标签: python python-3.x github travis-ci


【解决方案1】:

经过大量研究,我开始打印print(sys.path) 以找出“我在哪里工作”。从那里我创建了一个异常处理程序

try:
    sys.path.insert(0, os.path.abspath('..')) #Works for local
    from sheetmaker import html_builder
    from data import test_html_constants
except:
    sys.path.insert(0, os.path.abspath('.')) #Works for Travis CI
    from sheetmaker import html_builder 
    from data import test_html_constants

这是导入模块的正确方法吗?不知道,但它有效。

【讨论】:

    【解决方案2】:

    @cosme12 我没有尝试您的解决方案,但我能够通过在 .travis.yml 中明确声明 PYTHONPATH 来解决路径问题

    示例 .travis.yml:

    sudo: false
    language: python
    
    python:
      - "3.6"
    
    install:
      - export PYTHONPATH=$PYTHONPATH:$(pwd)/src/thermo
      - python3 setup.py install
    
    script:
      - pytest -s 
    

    只需手动将缺少的路径添加到 .travis.yml 中,travis 应该可以工作。

    我喜欢这个解决方案,因为您不需要更改代码,只需更改 travis 配置文件。

    【讨论】:

      猜你喜欢
      • 2015-04-16
      • 2019-02-17
      • 2015-03-18
      • 2016-03-20
      • 2016-08-13
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      相关资源
      最近更新 更多