在Windows 7上安装rpy2

28

我正在尝试在我的电脑上安装rpy2,但我没有成功。

我下载了源代码包,并尝试使用命令python setup.py install安装Rpy2(rpy2-2.3.2)。这是结果:

running install
running build
running build_py
running build_ext
"C:\PROGRA~1\R\R-215~1.2\bin\R" CMD config --ldflags
"C:\PROGRA~1\R\R-215~1.2\bin\R" CMD config --cppflags
"C:\PROGRA~1\R\R-215~1.2\bin\R" CMD config LAPACK_LIBS

returned an empty string.

"C:\PROGRA~1\R\R-215~1.2\bin\R" CMD config BLAS_LIBS

returned an empty string.

Configuration for R as a library:
    include_dirs: ('C:/PROGRA~1/R/R-215~1.2/include/i386', 'C:/PROGRA~1/R/R-215~1.2/include')
    libraries: ('R',)
    library_dirs: ('C:/PROGRA~1/R/R-215~1.2/bin/i386',)
    extra_link_args: ()
   # OSX-specific (included in extra_link_args)
    framework_dirs: ()
    framework: ()
building 'rpy2.rinterface._rinterface' extension
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
creating build\temp.win32-2.7\Release\rpy
creating build\temp.win32-2.7\Release\rpy\rinterface
C:\Rtools\gcc-4.6.3\bin\gcc.exe -mcygwin -mdll -O -Wall -DWin32=1 -I.\rpy\rinterface -IC:\Python27\include -IC:\Python27\PC -IC:/PROGRA~1/R/R-215~1.2/include/i386 -IC:/PROGRA~1/R/R-215~1.2/include -c .\rpy\rinterface\_interface.c -o build\temp.win32-2.7\Release\.\rpy\rinterface\_rinterface.o
cc1.exe: error: unrecognized command line option '-mcygwin'
error: command 'gcc' failed with exit status 1

我也尝试过build installeasy_install,但没有成功。我的环境是R 2.15.2,Python 2.7.2和Windows 7(32位)。

我做错了什么?

PS:如果我粘贴这个命令,结果是:

cygwin警告:

MS-DOS style path detected C:\PROGRA~1\R\R-215~1.2\bin\config.sh
Preferred POSIX equivalent is: /cygdrive/c/PROGRA~1/R/R-215~1.2/bin/config.sh
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

-LC:/PROGRA~1/R/R-215~1.2/bin/i386 -lR


可能涉及到了Cygwin。在安装rpy2时,尝试将其从%PATH%中移除。 - lgautier
也许... 但在 %PATH% 内没有 cygwin 的迹象,我应该寻找什么? - Luca Chiappi
你完全改变了问题的主体。这意味着所有的答案和评论突然都没有意义了。 - lgautier
嗯... 之前和现在的区别是我安装了Rtools(遵循我教授的建议)。 - Luca Chiappi
解决方案:不要使用Windows。 - wordsforthewise
9个回答

23

好的。根据之前的经验,我发现在Windows上安装rpy2的说明并不多。我知道它没有官方支持,但实际上并不难。通过以下几个步骤,我将展示我所做的事情,也许其他人也可以跟随我的步骤。

这些说明很可能只适用于Python 2.7+和R 3.2+,但也可能适用于R 3.0+。我将放置我在系统中使用的路径。 请务必相应地修改路径:

首先,在尝试这些步骤之前,请确保卸载任何先前安装的rpy2(并且显然在安装之前已经安装了R 3.2+)。

  1. 此处下载r2py的.whl文件
  2. 使用pip install [put .whl filename here](在命令行中)从下载文件的目录安装.w hl文件
  3. 将类似于C:\Program Files\R\R-3.2.0\bin的路径追加到您的PATH环境变量中
  4. 创建一个R_HOME系统变量,并设置为类似于:C:\Program Files\R\R-3.2.0
  5. 创建一个R_USER系统变量,值为您的用户名
  6. 创建一个R_LIBS_USER系统变量,其中包含外部R软件包被安装/将被安装的文件夹的路径。

就这样。打开命令提示符并输入R 命令。这应该启动R会话并显示版本信息。

现在打开python并运行以下行以查看是否成功:

import rpy2.robjects as robjects 

希望这可以帮到你。


这也适用于Windows 10和R-3.3.1!但需要安装Rtools。 - Robin Kramer-ten Have
请问您建议下载哪个rpy2二进制文件?我有R 3.3.2和Python 3.5.2。谢谢。 - splinter
1
@splinter Python 3.5有4个不同的二进制文件(cp35),分别适用于64位(amd64)和32位(win32)系统。从中缩小范围,您可以选择最新的rpy2版本(目前为2.8.5)。 - pbreach
谢谢@pbreach。您能否也请建议我应该为R_LIBS_USER系统变量指定哪个文件夹?我刚刚安装了全新的R。它应该是一个新文件夹吗?它必须放在特定的位置吗? - splinter
我不是很确定,但你可以尝试安装一个包,然后找到它可能在哪里。我不再安装rpy2,所以无法检查。 - pbreach
我花了几个小时通过尝试使用MSYS2、MinGW、环境变量等方式来安装rpy2。感觉就像当你无法编译某些东西时,它会成为对你智力的挑战(即使实际上只是考验你的耐心)。从那个.whl文件中安装很顺利。谢谢。 - JoseOrtiz3

15

我刚刚成功地在Windows 8.1 64位上使用http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2的二进制安装程序安装了rpy2。通常,与在Windows上编译软件包相比,下载二进制文件通常更加容易。

此外,在安装rpy2二进制文件之前,您应该设置R_HOME环境变量(在我的情况下为C:\Program Files\R\R-3.1.1)。否则,当您尝试导入rpy2时,会出现RuntimeError:R_HOME未定义错误。(感谢R_HOME Error with rpy2)

最后,请确保在IPython中使用%load_ext rpy2.ipython,而不是%load_ext rmagic,如果你想使用它。这是rpy2版本2.4.0中的新功能之一

(感谢IPython notebook and rmagic/rpy2: cannot find module ri2py (OSX 10.8.5, python 2.7, R 3.1))


你好,你使用的是哪个版本的Python?是32位还是64位的Python?谢谢,Luis - Luis Candanedo
嗨,谢谢,我成功安装了它。然而,它也影响了RStudio的工作。我会遇到路径错误。你有相同的经历吗?谢谢。路易斯 - Luis Candanedo
你在RStudio中遇到了什么错误?我认为这些都不会影响它的工作,除了R_HOME。也许你可以提出一个新的问题。 - joon
1
这适用于我,"开箱即用",在Python 3.7.4、Windows 10 Pro上使用rpy2-2.9.5-cp37-cp37m-win_amd64.whl。 - heisenBug

7

我也曾经在Windows上尝试过使用Rpy2,但一直没有成功。在与R2.15和预编译二进制版本2.3.4.win-amd64-py2.7的Rpy2进行了几个小时的折腾后,我遵循了这个问题,并安装了pyper。也许在支持到来之前,这对你有用。我个人非常希望在Windows和IPython笔记本(%load_ext rmagic)上看到Rpy2,但我不能再花更多时间在它上面了。


在一位教授的帮助下,我成功地在我所在大学的电脑上(使用 Fedora 操作系统)安装了 rpy2,并且现在可以用它来工作了。与 pyper 相比,我更喜欢 rpy2,因为有很多关于 rpy2 的文档。 - Luca Chiappi
Rpy2在Windows上使用非常麻烦,建议远离它。它没有得到很好的支持。我最终放弃了在Jupyter中使用rpy2,并转而使用在Windows Docker Desktop上运行Ubuntu来使用R cell magics。这避免了在Windows上出现(太多)未解决的R问题。为什么R内部有3到5个不同的面向对象系统?这是因为不同时间采用了不同的hack方法。该语言需要重新编写,以使其更加统一和一致。R需要一个有生之年的仁慈独裁者来引导它回到一致性。 - Rich Lysakowski PhD

3

以下是我使用的有效方法:

系统:Win 7-64,Python 3.6

1. 安装R和所需的软件包

2. 将R_HOMER_USER设置为环境变量

R_HOME = D:\Program Files\R\R-3.4.1
R_USER = Administrator 

在cmd中,通过echo %username%命令可以获取用户名。

3. 下载并安装rpy2

http://www.lfd.uci.edu/~gohlke/pythonlibs/下载rpy2。

检查其路径,并在cmd中使用pip install rpy2-2.8.6-cp36-cp36m-win_amd64.whl进行安装。

4. 创建笔记本并查看是否可用

import rpy2.robjects as robjects

# test : evaluating R code
robjects.r('''
        # create a function `f`
        f <- function(r, verbose=FALSE) {
            if (verbose) {
                cat("I am calling f().\n")
            }
            2 * pi * r
        }
        # call the function `f` with argument value 3
        f(3)
        ''')

2
在Anaconda上,您可以使用以下命令进行安装:
conda install --channel https://conda.anaconda.org/Richarizardd rpy2

另外一种方法是尝试:

conda install -c r rpy2 

还可以参考以下内容:

https://github.com/conda-forge/rpy2-feedstock

现在返回以下消息:```PackageNotFoundError: 找不到包:'' 当前 win-64 渠道中缺少依赖项:
  • rpy2 -> r```
- leerssej
我认为与其给解决方案投反对票,你应该用更新的方法来纠正它。当我在2016年写这篇文章时,它是正确的,但在2018年可能会发生变化或其他事情...不要期望事物不会被更新... - Manoj Kumar
我完全同意。我没有点踩。我只是添加了一个参考注释。如果我能找到解决这个问题的方法,我会添加一个更新的答案。 - leerssej

2

编辑 最终我成功了!!!请参见以下内容:

我一直在苦苦挣扎,想要让它正常工作,但仍然没有完全弄清楚。我发现错误

'sh' 不是内部或外部命令,也不是可运行的程序或批处理文件

是由于缺少mingw和Rtools(以及其他类Unix助手程序)导致的。(http://sourceforge.net/p/rpy/mailman/message/26549197/

我通过安装Rtools(http://cran.r-project.org/bin/windows/Rtools/)和mingw(http://sourceforge.net/projects/mingw-w64/)来解决了这个问题(但因为sourceforge.net上的mingw-w64项目正在转移到mingw-w64.org,建议使用mingw-w64.org

我已经解决了 R.exe CMD config --ldflags 错误,但卡在了

TypeError:类型为“NoneType”的对象没有长度()

的错误上。我仍在寻找解决方案!!!

希望这能帮助某个时刻的某个人。

更新: 看起来安装存在一些问题。setup.py无法找到正确版本的R,编译器也有问题。

因此,继续操作的方式如下:

  1. https://pypi.python.org/pypi/rpy2 下载源代码。
  2. 更新环境变量 - 在用户变量中
    • PATH:附加到您的 R 安装路径,例如;C:\Program Files\R\R-3.0.2\bin\x64
    • R_HOME:一个新的变量,包含指向 R 的路径: C:\Program Files\R\R-3.0.2
    • R_USER:用户用户名,例如 john
  3. 安装 Rtools (http://cran.r-project.org/bin/windows/Rtools/) 和 mingw (http://mingw-w64.org)。
  4. 在约 123 行之前添加以下内容:

    return self._version 我添加了 self._version = [3, 0] 来强制版本为 3.0 (也许会有其他更好的解决方法)

  5. 在文件 unixccompiler.py 中,无论是 python27/lib/distutils 还是我的情况下的 C:\Users(user_name)\AppData\Local\Continuum\Anaconda\Lib\distutils,请注释掉第 227 行

compiler = os.path.basename(sysconfig.get_config_var("CC")) 用 # (#compiler = os.path.basename(sysconfig.get_config_var("CC"))) 替换该行

并添加以下行

compiler = 'gcc'

其他一些事情 - 使用命令提示符 cmd 进行安装。使用

python setup.py build install

安装 Rtools 和 mingw,接受所有默认设置。在 Rtools 中选择

extra to build 64 bit R

edit the system PATH

就这样!搞定了...

希望这能帮到您!


使用Bash环境(Git Bash)解决任何“linux命令未找到”的问题。 - JoseOrtiz3

1
安装脚本setup.py提示在运行时遇到了问题:

"C:\PROGRA~1\R\R-215~1.2\bin\R" CMD config --ldflags

请打开终端,粘贴该命令并检查错误。
由于您编辑了问题并输出了问题,看起来问题是在从python setup.py install作为子进程运行该命令时返回了空字符串,但是在从终端运行该命令时有输出。我还从终端的输出中读取到cygwin被涉及。这可能是问题所在?

有时很难说清楚。问题是“我做错了什么?”。告诉如何确定错误可以被视为一个答案,尽管是部分答案。 - lgautier
1
我同意,但我觉得评论是让OP提供更多信息的适当方式。 - Paul Hiemstra
正如人們所說,有很多種方法可以解決問題。在這裡,答案可以被編輯,以便將從症狀到解決問題的完整步驟總結在最後(而不是通過評論讓下一個遇到相同問題的人去尋寶)。 - lgautier
执行 R.exe CMD config --ldflags 时,我得到错误信息 'sh' is not recognized as an internal or external command, operable program or batch file.。这让我相信 R 假定是一个 *nix 环境并试图运行一个 shell 脚本。即使从 Cygwin bash 运行也没有帮助。 - DavidJ

1

I am not sure if anyone is still following the discussion but in any case, My aim in trying to get rpy2 to work was so to be able to get it working in my Ipython notebooks. If anyone else is trying to do the same, I would suggest using IRkernel which installs smoothly as a cake (well made cake). Here are the resources to get it done. I have used it and it works like a charm.

basically what you need to run is this:

install.packages(c('rzmq','repr','IRkernel','IRdisplay'),repos = c('http://irkernel.github.io/', getOption('repos')))

IRkernel::installspec()

Here are the resources if you find any troubles:

https://github.com/IRkernel/IRkernel

http://blog.revolutionanalytics.com/2015/09/using-r-with-jupyter-notebooks.html

http://www.michaelpacer.com/maths/r-kernel-for-ipython-notebook

HTH


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接