【问题标题】:Travis CI: error when installing rpy2Travis CI:安装 rpy2 时出错
【发布时间】:2016-05-03 09:33:14
【问题描述】:

我正在开发一个依赖于rpy2 的python 包。我想用 Travis CI 运行测试。在 .travis.yml 中,我安装 conda 并使用 green 运行测试:

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",
    ],
)

当 Travis 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

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

编辑: 在 cmets 中,有人指出我需要在 addons.apt.sources 中指定至少一个源才能使 APT 插件正常工作,并且 R 包被命名为 r-base。我在.travis.yml做了如下修改:

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

现在rpy2 似乎可以找到R,但是在使用green 运行测试时导入它时仍然出现错误:

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没有正确安装。

【问题讨论】:

  • R 不是一个包。从here 安装。当然,请确保它在您的 PATH 上。
  • 你知道如何使用 Travis CI 自动完成吗?
  • 在我的区域之外,但可能类似于this
  • 不,如果所有项目都在 R...
  • 非常重要的注意事项:您需要在addons.apt.sources 中指定至少一个源,APT 插件才能工作(官方列表here),在这种情况下 - 源 (PPA),其中r 包位于(r-packages-precise 如果它在“默认”存储库中)。此外,R 包看起来像是名为 r-base,因此请确保该包确实存在。

标签: python r travis-ci rpy2


【解决方案1】:

报错ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC其实是conda安装的readline造成的。

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

我验证有效的解决方法是添加import readline。当我在 .travis.yml 上的 script 调用 only 具有的 python 脚本时

import rpy2.robjects

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

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

import readline
import rpy2.robjects

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2014-06-14
    • 2018-09-10
    • 2014-05-23
    • 2013-02-25
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多