2016-01-26 44 views
3

我正在开发一个依赖于rpy2的python包。我想用Travis CI进行测试。在.travis.yml我安装畅达和运行测试与​​:Travis CI:安装rpy2时出错

language: python 

# Be strict when checking our package 
warnings_are_errors: true 

# command to install dependencies 
install: 
    # http://conda.pydata.org/docs/travis.html 
    - wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; 
    - bash miniconda.sh -b -p $HOME/miniconda 
    - export PATH="$HOME/miniconda/bin:$PATH" 
    - hash -r 
    - conda config --set always_yes yes --set changeps1 no 
    - conda update -q conda 
    # Useful for debugging any issues with conda 
    - conda info -a 
    # Replace dep1 dep2 ... with your dependencies 
    - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy matplotlib pandas cython 

    - source activate test-environment 

    - python setup.py install 

# command to run tests 
script: 
    - green ... 

setup.py

from setuptools import setup, find_packages 

setup(
    version="0.0.0", 
    name="...", 
    packages=find_packages(), 
    install_requires=[ 
     ... 
     "green>=2.0.7", 
     "rpy2>=2.7.7", 
    ], 
) 

当特拉维斯CI安装我的包,我得到以下错误:

Installed /home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/tubtrack-0.0.0-py2.7.egg 
Processing dependencies for tubtrack==0.0.0 
Searching for rpy2>=2.7.7 
Reading https://pypi.python.org/simple/rpy2/ 
Best match: rpy2 2.7.7 
Downloading https://pypi.python.org/packages/source/r/rpy2/rpy2-2.7.7.tar.gz#md5=be93432426744cdae8a0e5d2b157d371 
Processing rpy2-2.7.7.tar.gz 
Writing /tmp/easy_install-CF50ds/rpy2-2.7.7/setup.cfg 
Running rpy2-2.7.7/setup.py -q bdist_egg --dist-dir /tmp/easy_install-CF50ds/rpy2-2.7.7/egg-dist-tmp-TTJjtB 
error: Setup script exited with Error: Tried to guess R's HOME but no command (R) in the PATH. 

我想知道如果有人知道如何解决它?我试图在.travis.yml安装R:

addons: 
    apt: 
    packages: 
    - r 

但是,它并没有改变错误信息......

编辑:在有人指出,我需要至少指定一个评论来源addons.apt.sources APT插件的工作和R包被命名为r-base。我做了以下修改中.travis.yml

addons: 
    apt: 
    sources: 
    - r-packages-precise 
    packages: 
    - r-base 

现在看来,rpy2可以找到R,但我仍然得到一个错误,当测试期间,与​​运行输入:

Traceback (most recent call last): 
    File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/green-2.2.0-py2.7.egg/green/loader.py", line 212, in loadFromModuleFilename 
    __import__(dotted_module) 
    File "xxx/xxx/xxx.py", line 4, in <module> 
    from .. import tools 
    File "xxx/tools.py", line 5, in <module> 
    import rpy2.robjects as robjects 
    File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/rpy2-2.7.7-py2.7-linux-x86_64.egg/rpy2/robjects/__init__.py", line 15, in <module> 
    import rpy2.rinterface as rinterface 
    File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/rpy2-2.7.7-py2.7-linux-x86_64.egg/rpy2/rinterface/__init__.py", line 99, in <module> 
    from rpy2.rinterface._rinterface import * 
ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC 

但是,在我的笔记本电脑上它工作正常!所以我想这个问题仍然是rpy2没有正确安装。

+0

R不是包装。从[这里]安装(https://cran.r-project.org/)。当然,确保它在你的PATH上。 – alistaire

+0

你知道如何自动使用Travis CI吗? – desa

+0

Sorta在我的区域之外,但可能类似[this](https://docs.travis-ci.com/user/languages/r)。 – alistaire

回答

3

错误ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC实际上是由于由conda安装的readline引起的。

这个Github issue有关于这个问题的更多细节。

我已验证工作的解决方法是添加import readline。当我在.travis.yml script调用一个Python脚本,只有

import rpy2.robjects 

我得到同样的错误ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC

当我使用下面的代码时,我的构建变绿。

import readline 
import rpy2.robjects