[Python]不能让Travis CI工作。路径问题

问题描述 投票:0回答:2

这是我第一次使用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说:

  • 来自sheetmaker import html_builder
  • ModuleNotFoundError:没有名为'sheetmaker'的模块

导入东西的正确方法是什么?这是github项目的更多细节:github project!

提前致谢。

python python-3.x github travis-ci
2个回答
2
投票

经过大量的研究,我开始打印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

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


1
投票

@ 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配置文件。

© www.soinside.com 2019 - 2024. All rights reserved.