Python导入在travisCI上失败但在本地失败

时间:2016-03-13 15:57:32

标签: python travis-ci nose

我正在尝试将TravisCI集成到我的工作流程中,并意识到我有一些依赖项,因为我的旧目录结构(没有自包含的,virtualenv - 能够git repos)。

当我尝试在本地运行nosetests时,它运行测试就好了;当TravisCI尝试运行它们时,它会失败,并出现import错误。具体来说,我有,作为我的测试脚本中的一行:

from myproject import something

我的目录结构在我的git repo myproject里面就像是:

.travis.yml
requirements.txt
something.py
tests/
    test_something.py
  • 我试图让它在本地失败(因为那时我可能会理解TravisCI问题),但是无法完成它。
  • 我尝试使用常规python运行,并使用virtualenv将nose添加到requirements.txt,测试总是在本地传递。

我觉得我仍然没有理解绝对与相对的进口,我不知道这是否会在这里发挥作用,或者我只是在我的项目中做了一些明显和愚蠢的事情。

期望的结果:弄清楚为什么TravisCI会失败,并相应地修复我的回购,这样我就可以提交并在本地和TravisCI上正确构建。如果这需要更加激烈的变化,例如“你应该setup.py对环境造成祸害”或类似的 - 请告诉我。我是Python的新方面的新手,并且发现当前的文档非常不清楚。

作为一个FYI,我发现this question并添加--exe没有帮助,或者似乎是同一个问题。

1 个答案:

答案 0 :(得分:6)

我看到没有答案,我遇到了同样的问题,所以我发帖在这里希望帮助某人:

解决方案1 ​​

我的快速解决方法是在PYTHONPATH=$PYTHONPATH:$(pwd)中添加此行导出.travis.yml

before_install:
  - "pip install -U pip"
  - "export PYTHONPATH=$PYTHONPATH:$(pwd)"

解决方案2

setup.py应该是默认选项,因为它是最优雅的,配置如下:

from setuptools import setup, find_packages

setup(name='MyPythonProject',
      version='0.0.1',
      description='What it does',
      author='',
      author_email='',
      url='',
      packages=find_packages(),
     )

然后在.travis.yml

中添加此行
before_install:
  - "pip install -U pip"
  - "python setup.py install"

解决方案3:

更改项目的布局,使应用程序下的测试文件夹(具有核心python代码的文件夹)如下:

.travis.yml
requirements.txt
app
|_ tests
|   |_ test_application.py
|_ application.py

在travis中运行测试,覆盖率和鼻子测试如下:

script:
    - "nosetests --with-coverage --cover-package app"