Travis CI: ошибка при установке rpy2

3

Я разрабатываю пакет python, который зависит от rpy2. Я хотел бы запустить тест с 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 HOME but no command (R) in the PATH.

Мне интересно, знает ли кто, как его решить? Я попытался установить r в .travis.yml:

addons:
  apt:
    packages:
    - r

Однако он не изменил сообщение об ошибке...

EDIT: В комментариях было указано, что мне нужно указать хотя бы один источник в 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 не установлен должным образом.

  • 0
    R не пакет. Установите отсюда . И удостоверится, что это на вашем пути, конечно.
  • 0
    Знаете ли вы, как сделать это автоматически с Travis CI?
Показать ещё 5 комментариев
Теги:
travis-ci
rpy2

1 ответ

3
Лучший ответ

Ошибка ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC на самом деле связана с чтением строки, установленной кондой.

Этот вопрос Github содержит более подробную информацию о проблеме.

Обходной путь, который я проверил для работы, заключается в добавлении import readline. Когда мой script на .travis.yml вызывает питон script, который имеет только

import rpy2.robjects

Я получаю ту же ошибку ImportError: /home/travis/miniconda/envs/test-environment/lib/libreadline.so.6: undefined symbol: PC.

Когда я использую код ниже, моя сборка будет зеленой.

import readline
import rpy2.robjects

Ещё вопросы

Сообщество Overcoder
Наверх
Меню