我一直致力于通过简单的服务器脚本和套接字连接与Python接口的R包。我可以在我自己的机器上进行测试,但我也想在Travis版本上进行测试(我不想完成设置Linux VM的工作)。要做到这一点,我需要一个Python安装,我可以在我的R包测试中传递路径,以及要使用的端口号。
我已经看过this answer建议安装多个Python版本是可能的,但我不确定如何处理
是否有可能在特拉维斯做我想做的事情? 应该我想用Travis做这件事吗?
编辑这是我的Travis配置:
language: r
r:
- release
- devel
cache: packages
sudo: false
matrix:
include:
- python:2.7
- python:3.6
# Be strict when checking our package
warnings_are_errors: true
# System dependencies for HTTP calling
r_binary_packages:
- jsonlite
- R6
这是我的R包中的例子:
pypath = Sys.which('python')
if(nchar(pypath) > 0) {
py = PythonEnv$new(port = 6011, path = pypath)
py$start
py$running
py$set(a = 5)
py$get('a')
py$stop
} else {
message("No Python environment available")
}
我的示例肯定会找到一个 Python路径,但失败并显示错误
socketConnection中的警告(port = self $ port,open =" r +",blocking = TRUE,:localhost:6011无法打开
socketConnection错误(port = self $ port,open =" r +&#34 ;, blocking = TRUE,:
无法打开连接
我用另一个端口测试了这个并发生了同样的错误。
编辑2
我还尝试过主机127.0.0.1
和0.0.0.0
,但没有骰子。根据Travis的文档,这应该有用......也许是R容器的一个问题?
答案 0 :(得分:1)
这是我用于我的吡咯包装的travis.yml。它只是安装R usinq ubuntu软件包管理器:
language: python
python:
- "3.6"
install:
- pip install cython pytest hypothesis
- sudo apt-get install -y r-base
- echo 'source("https://bioconductor.org/biocLite.R"); biocLite("S4Vectors"); biocLite("GenomicRanges")' > install.R
- python setup.py install
script:
- py.test tests/
另一种方法是通过conda安装R。这是pyranges包中的示例:
# Stolen from http://conda.pydata.org/docs/travis.html
language: python
python:
# We don't actually use the Travis Python, but this keeps it organized.
- "3.6"
install:
- sudo apt-get update
# We do this conditionally because it saves us some downloading if the
# version is the same.
- wget https://repo.continuum.io/miniconda/Miniconda3-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
- conda config --add channels bioconda
- conda config --add channels r
# Useful for debugging any issues with conda
- conda info -a
- conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy pandas pytest pytest-cov cython tabulate hypothesis bedtools # ray
- source activate test-environment
- python setup.py install # will install ncls
- python --version
- python -c 'import pandas as pd; print(pd.__version__)'
- ls tests
script: py.test -v tests # verbose to see that tests run and so that travis does not time out on hypothesis tests
答案 1 :(得分:1)
您的问题标题和问题正文完全不同。
类似于The Unfun Cat's answer,它使用travis安装python并使用apt安装R,您可以将travis用于R并使用apt安装python:
language: r
install:
- sudo apt-get install -y python2.7 python3.6
请注意,travis也has an apt addon可以使您的.yaml更加整洁(但可移植性可能会降低)。
language: r
addons:
apt:
packages:
- python2.7
- python3.6
Sys.which
应该以{{1}}和python2.7
的身份访问python3.6
,而不仅仅是“ python”。
which python
将返回上次安装的版本或上一次安装的python2*
。
有许多原因可能导致您无法建立连接。 一个常见的原因是该端口已被使用。 有时X窗口系统(ref)使用端口6011,因此travis的服务之一可能正在使用它。
使用this reference on how to check for used ports,您可以尝试添加类似内容
sudo lsof -i -P -n | grep LISTEN | grep 6011
到您的travis.yaml
,这样您就可以在日志中查看是否使用了端口。
您也可以在脚本中尝试使用其他未使用的端口号。
我确实发现this github comment特别引用了R的类似问题;也许您可以在那找到更多。