我对这个领域真的很陌生,所以我必须探索 Vscode 中的一些新功能。我曾尝试在 python intrepeter 上运行 rscript 。但它可能无法解决很多问题。首先是测试代码
from rpy2 import robjects
pi = robjects.r['pi']
pi
在终端上,我得到这样的声明:
rpy2\rinterface_lib\openrlib.py", line 51, in _dlopen_rlib
rlib = ffi.dlopen(lib_path)
^^^^^^^^^^^^^^^^^^^^
OSError: cannot load library 'C:\Program Files\R\R-4.3.1\bin\x64\R.dll': error 0x7e
我尝试了另一种解决方案来使用子进程功能打开R脚本,但它又遇到了麻烦。
retcode = subprocess.call(["C:/Users/X/.vscode-R/RScript", "Testing_F.r"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 389, in call
with Popen(*popenargs, **kwargs) as p:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
有人用 rpy2 处理同样的问题吗?我该如何应对?
我在 Colab 上尝试过这个,然后它就可以正常工作,不会出现任何错误。
从 Python 3.8 开始,出于安全原因,设置 PATH 不再对解析 DLL 产生影响。相反,在加载之前显式包含 DLL 路径
rpy2
:
import os
os.add_dll_directory(r"path_to_R/bin/x64/") # E.g., "C:/Program Files/R/R-4.3.1/bin/x64"
from rpy2.robjects.packages import importr
这个答案有更多细节。