尝试安装 rpy2 导致“错误:命令错误,退出状态为 1”

尝试安装 rpy2 导致“错误:命令错误,退出状态为 1”

我尝试使用命令在 Windows 版 Ubuntu 中安装 rpy2 pip install rpy2,但出现以下错误消息:

ERROR: Command errored out with exit status 1:
 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-isr_d1d8/rpy2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-isr_d1d8/rpy2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-isr_d1d8/rpy2/pip-egg-info
     cwd: /tmp/pip-install-isr_d1d8/rpy2/
Complete output (9 lines):
Unable to determine R home: [Errno 2] No such file or directory: 'R'
/home/ziv/.local/lib/python3.8/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 0.23ubuntu1 is an invalid version and will not be supported in a future release
  warnings.warn(
/home/ziv/.local/lib/python3.8/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 0.1.36ubuntu1 is an invalid version and will not be supported in a future release
  warnings.warn(
/home/ziv/.local/lib/python3.8/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
  warnings.warn(
Unable to determine R home: [Errno 2] No such file or directory: 'R'
Error: rpy2 in API mode cannot be built without R in the PATH or R_HOME defined. Correct this or force ABI mode-only by defining the environment variable RPY2_CFFI_MODE=ABI
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

我尝试按照消息中的说明操作并使用命令RPY2_CFFI_MODE=ABI。我找不到上述消息中提到的日志文件在哪里。我还使用命令将 R 添加到 PATH export PATH=$PATH:/mnt/c/Program\ Files/R/R-4.2.1/bin/x64/R.exe,并设置了 R_HOME 变量:R_HOME=/mnt/c/Program\ Files/R/R-4.2.1/bin/x64/。尝试这些解决方案后,我仍然收到错误消息。

有任何想法吗?

答案1

顺便说一句,我喜欢这个问题。这是个好问题。有些问题之所以“好”,是因为它们是会影响很多人的问题,但这里可能不是这种情况。有些问题之所以“好”,是因为它们发人深省或难以解决——同样,这里的情况并不多。这个问题很好,因为它包括了你为解决问题所做的努力(搜索和研究...规则)。只有有了这个信息,问题才会显现出来!

我还使用命令将 R 添加到 PATH export PATH=$PATH:/mnt/c/Program\ Files/R/R-4.2.1/bin/x64/R.exe,并设置了 R_HOME 变量:R_HOME=/mnt/c/Program\ Files/R/R-4.2.1/bin/x64/

这表明你已经安装了视窗版本,但你试图安装这个包在Ubuntu(Linux/WSL)使用 Linuxpip命令。不幸的是,这行不通。您需要使用:

  • Windows Python 与 Windows R 以及 Windows pip
  • 或者以上所有版本的 Linux 版本

Linux 版本pip不会查找R.exe,因为 Linux 版本只是R。Linux 实际上没有文件扩展名的概念。

即使您能够以pip某种方式告诉安装程序它应该查找R.exe,您仍然会遇到多个其他问题,原因是:

  • Linux 路径使用/分隔符,而 Windows 路径使用\
  • (潜在)Linux 原生 R 模块没有在 Windows 原生 Python 进程内运行。
  • 配置文件预期位置的差异。
  • 可能还有其他一些

如果您想使用 Windows 版本的 R 进行开发,则需要安装 Windows 版本的 Python/Pip 并从 PowerShell 或 CMD 进行操作。

但是,如果您想通过 WSL 使用 Linux/Ubuntu 版本进行开发,则需要使用 Linux 版本的 R。我自己在这方面并没有太多专业知识,但据我了解,大多数人使用 CRAN PPA 在 Ubuntu 中获取最新的 R 版本。请参阅这个 Ask Ubuntu 问题(旧的,但我相信仍然相关 - 也指向 Stack Overflow 问题)或本《数字海洋指南》了解详情。

请注意,由于 R 严重依赖于 GUI,因此你需要在支持 WSLg 的 Windows 11 下运行 WSL,或者在 Windows 10 上使用其中一种解决方法。请参阅(更详细)发布以获取更多信息。

相关内容