5

我使用 Travis CI 作为毒理学绘图项目的一部分。对于这个项目,我需要 python-openbabel 作为依赖项。因此,我已将 apt-get 安装程序添加到 .travis.yml 文件中,如下所示(注释已删除)。

language: python
python: 
  - "2.7"
before_install:
  - sudo apt-get update -qq
  - sudo apt-get install python-openbabel
install: "pip install -r requirements.txt"
script: nosetests tox.py

但是,所有这些尝试都失败并显示错误消息Error: SWIG failed. Is Open Babel installed?。我尝试将 SWIG 添加到要安装的应用程序列表中,但无济于事。

此外,我尝试添加 Openbabel 本身提出的整个构建过程,这会产生以下 travis.yml:

language: python
python: 
  - "2.7"
before_install:
  - sudo apt-get update -qq
  - sudo apt-get install python-openbabel
  - wget http://downloads.sourceforge.net/project/openbabel/openbabel/2.3.1/openbabel-2.3.1.tar.gz?r=http://%3A%2F%2Fsourceforge.net%2Fprojects%2Fopenbabel%2Fopenbabel%2F2.3.1%2Fts=1393727248&use_mirror=switch
  - tar zxf openbabel-2.3.1.tar.gz
  - mkdir build
  - cd build
  - cmake ../openbabel-2.3.1 -DPYTHON_BINDINGS=ON
  - make
  - make install
  - export PYTHONPATH=/usr/local/lib:$PYTHONPATH
install: "pip install -r requirements.txt"
script: nosetests tox.py

尝试解压下载的文件时失败。

所有失败的构建都可以在 Travis-CI 上看到:https
://travis-ci.org/ToxProject/ToxProject Github repo 在这里:https ://github.com/ToxProject/ToxProject

简而言之,我如何python-openbabel使用 Travis-CI?

4

2 回答 2

1

我看到现在构建在 pip install 要求阶段失败了。Travis 为运行 python 创建了一个虚拟环境。默认情况下,系统上安装的 python 包(即通过 apt-get)将不可用,除非你将它添加到你的 travils.yml:

virtualenv:
      system_site_packages: true

我对 python-qt4 和 python-qgis 有同样的问题,这是我最近使用的一个 travis.yml 文件:https ://github.com/anitagraser/TimeManager/blob/master/.travis.yml

于 2015-02-05T09:08:18.043 回答
1

通过 apt-get 安装的 openbabel 的版本是 1.7 而 requirements.txt 中 setup.py 中指定的版本是openbabel>=1.8. 这使得通过 apt-get 安装的包不满足requirements.txt并且 pip 正在尝试安装它,而不管安装的旧版本的 openbabel。而且 virtualenv 不使用已经安装的系统包。

而通过pip安装openbabel时,需要libopenbabel哪些头文件不包含在libopenbabel4其中python-openbabeltravisCI 使用的 ubuntu 12.04版本libopenbabel-dev不能满足openbabel==1.8.

解决方案:

libopenbabel-dev手动安装更新版本libopenbabel4

before_install:
  - sudo apt-get install -qq -y swig python-dev
  - wget http://mirrors.kernel.org/ubuntu/pool/universe/o/openbabel/libopenbabel4_2.3.2+dfsg-1.1_amd64.deb
  - sudo dpkg -i libopenbabel4_2.3.2+dfsg-1.1_amd64.deb
  - wget http://mirrors.kernel.org/ubuntu/pool/universe/o/openbabel/libopenbabel-dev_2.3.2+dfsg-1.1_amd64.deb
  - sudo dpkg -i libopenbabel-dev_2.3.2+dfsg-1.1_amd64.deb
于 2015-02-05T03:07:22.843 回答