在Windows上安装rpy2时出现错误

8

我正在尝试安装rpy2包,但是遇到以下错误:

C:\python27>easy_install rpy2

Searching for rpy2
Reading http://pypi.python.org/simple/rpy2/
Reading http://rpy.sourceforge.net
Best match: rpy2 2.3.3
Downloading http://pypi.python.org/packages/source/r/rpy2/rpy2-2.3.3.tar.gz#md5=6cd95eb70645577cb53198ef0a32395e
Processing rpy2-2.3.3.tar.gz
Running rpy2-2.3.3\setup.py -q bdist_egg --dist-dir c:\users\chetan~1\appdata\local\temp\easy_install-wfxip9\rpy2-2.3.3\egg-di
st-tmp-rrezfb
"C:\PROGRA~2\R\R-28~1.0\bin\R" CMD config --ldflags
Invalid substring

in string

C:\Python27\lib\site-packages\setuptools\command\easy_install.py:921: RuntimeWarning: tp_compare didn't return -1 or -2 for ex
ception
  raise DistutilsError("Setup script exited with %s" % (v.args[0],))
error: Setup script exited with Problem while running `"C:\PROGRA~2\R\R-28~1.0\bin\R" CMD config --ldflags`

当我尝试使用pip时,出现以下情况:
c:\Python27\Lib\site-packages\django\bin>pip install rpy2

下载/解压 rpy2 运行setup.py egg_info安装 rpy2

"C:\PROGRA~2\R\R-28~1.0\bin\R" CMD config --ldflags
Invalid substring

in string

Problem while running `"C:\PROGRA~2\R\R-28~1.0\bin\R" CMD config --ldflags`

conda install rpy2 只在Windows系统上有效。 - Simd
3个回答

1
我也花了几天的时间... 然后我偶然发现this thread,里面提供了一个链接: http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 在这个页面上,你可以找到(除了其他有用的东西之外)为Windows和不同版本的Python编译的rpy2预编译版本。它显然只适用于R 2.15.3,我没有尝试过其他版本。

0

这个错误

"C:\PROGRA~2\R\R-28~1.0\bin\R" CMD config --ldflags

可能是由于Windows中缺少类Unix工具引起的。(您也可能遇到了像下面这样的错误:

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

我最终在Windows 7上通过安装Rtools和mingw编译器以及更改setup.py和unixccompiler.py文件来使其正常工作。请参见rpy2 install on windows 7

此外,错误

%load_ext rmagic

RuntimeError("Unable to locate R.dll within %s" % RHOME)

是由于rpy2在代码中无法正确找到R.dll引起的。您可以将R_HOME环境变量添加为例如C:\Program Files\R\R-3.0.2的外部文件夹(有关详细信息,请参见链接)。

希望这可以帮助到您。


0

最近必须尝试从源代码构建此项目。获得了rpy2-2.2.2版本,以便我可以在Oracle Linux上与Python 2.6.6一起使用。

让这个工作的解决方案是在setup.py脚本中修复一些问题。

首先,允许get_rconfig()接受空字符串。如果有一种方法可以标记它,那对我来说并不明显:

    config = RConfig()
    for about in ('--ldflags', '--cppflags',
                  'LAPACK_LIBS', 'BLAS_LIBS'):
        #config += get_rconfig(r_home, about)
        config += get_rconfig(r_home, about, allow_empty = True)

其次,在 RConfig.from_string 中修复一个关于 dropthrough 的 bug,其中引用了一个不存在的变量:
            elif rconfig_m is None:
                if allow_empty:
                #if allow_empty and (rconfig == ''):
                    print(cmd + '\nreturned an empty string.\n')

这样可以解析R CMD配置循环,并处理空白情况(如果您的R构建不是作为共享库构建,则可能会遇到这种情况),然后我能够完成循环。

1
我曾经在处理Python 2.6和rpy2时遇到过类似的问题。最终,我发现2.3.10似乎是与Python2.6兼容的最后一个rpy2版本。所以只需要执行 sudo pip install rpy2==2.3.10 即可解决问题。 - ChrisGuest
1
@Robert:感谢您的发布,但是为什么要检查 rconfig_m == '',而前一个检查是 if rconfig_m is None - name_masked
很好的问题@name_masked。正如你所注意到的,我正在进行代码黑客攻击,可能是盲目地将rconfig替换为rconfig_m。你是正确的,一个空字符串并不等于None。请随意通过修复上面的帖子来获得一些编辑信用。 - Robert Casey

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