我尝试使用命令在 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 上使用其中一种解决方法。请参阅这和这(更详细)发布以获取更多信息。