Ste*_*ijl 5 python travis-ci openbabel
我使用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
Run Code Online (Sandbox Code Playgroud)
但是,所有这些尝试都失败并显示错误消息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
Run Code Online (Sandbox Code Playgroud)
尝试解压缩下载的文件时失败.
所有失败的版本都可以在Travis-CI上看到:https
://travis-ci.org/ToxProject/ToxProject Github repo在这里:https://github.com/ToxProject/ToxProject
简而言之,我如何python-openbabel与Travis-CI合作?
通过apt-get安装的openbabel版本是1.7,而requirements.txt中setup.py指定的版本是openbabel>=1.8.
这个make使得apt-get安装的包不满足并且 virtualenv 不使用已经安装的系统软件包。requirements.txt并且 pip 正在尝试安装它,而不管安装的 openbabel 的旧版本。
而通过pip安装openbabel时,需要的头文件travisCI使用的ubuntu 12.04中的版本libopenbabel不包含在libopenbabel4自动安装的头文件中python-openbabellibopenbabel-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
Run Code Online (Sandbox Code Playgroud)