30

我在启动我的 rstudio 会话时运行的第一行是:

library(reticulate)
use_python("/usr/local/lib/python3.6/site-packages")

但是,当我运行py_config()它时,它仍显示为仍在使用默认的 python 2.7 安装。

这是一个问题,因为我无法导入为 python3 安装的任何模块。知道为什么这不起作用吗?我非常密切地关注文档。

4

8 回答 8

35

我观察到 .RProfile 中的“use_python('path')”技术和 Sys.setenv(RETICULATE_PYTHON = 'path') 的策略都不适合我(当然我确信它一定对其他人有用。)

无论如何,终端的线路,

which -a python python3

确实产生了两个可供选择的路径(一个用于安装在我的 mac 上的 python2 和一个用于 python3),因此我能够在我的主目录中创建一个“.Renviron”文件,其中包含一行:

RETICULATE_PYTHON="/usr/local/bin/python3"

在我重新启动 RStudio 后,library(reticulate)激活所需的 python3,并repl_python()打开一个 python3 交互窗口等。

于 2018-07-26T21:21:20.990 回答
23

它对我有用:

Sys.setenv(RETICULATE_PYTHON = "/usr/bin/python3")
library(reticulate)

在第一次使用 reticulate 之前设置 RETICULATE_PYTHON 似乎很重要。

于 2019-11-07T06:28:14.240 回答
9

use_python("path/to/python3")肯定不行,虽然网状Python版本配置文章是这么说的。不要相信!:-)

我试图用当前的网状版本(1.13)设置解释器,包给了我一个非常诚实的答案:

> library("reticulate")
> repl_python()
Python 2.7.15 (/usr/bin/python)
Reticulate 1.13 REPL -- A Python interpreter in R.
> use_python('/usr/bin/python3', require=T)
ERROR: The requested version of Python ('/usr/bin/python3') cannot be
used, as another version of Python ('/usr/bin/python') has already been
initialized. Please restart the R session if you need to attach
reticulate to a different version of Python.
Error in use_python("/usr/bin/python3", require = T) : 
  failed to initialize requested version of Python

幸运的是,将.Renviron包含该行的文件RETICULATE_PYTHON="/path/to/python3"放入用户的主目录确实有效

> library("reticulate")
> py_config()
python:         /usr/bin/python3
libpython:      /usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so
pythonhome:     /usr:/usr
version:        3.6.8 (default, Oct  7 2019, 12:59:55)  [GCC 8.3.0]
numpy:           [NOT FOUND]

NOTE: Python version was forced by RETICULATE_PYTHON

最后,这是我的答案的附加价值:

RETICULATE_PYTHON您可以通过将行添加到全局Renviron文件来为所有用户配置网状 Python 解释器。它通常位于etcR 主目录的子目录中。R.home()您可以通过在 R 解释器中运行该函数来找出 R 的家在哪里。就我而言(Ubuntu 18.04.3 LTS)它是/usr/lib/R,所以我编辑了/usr/lib/R/etc/Renviron. 您显然需要管理员权限才能执行此操作。

于 2019-10-12T12:18:19.807 回答
6

在 Mac OSX 上唯一对我有用的是,在终端中执行以下命令:

touch $HOME/.Renviron

然后打开它,我使用vim,所以我的命令如下:

vim $HOME/.Renviron

添加以下内容(对于 anaconda):

RETICULATE_PYTHON="/anaconda3/bin/python"

否则,在终端类型:which python3并输入您的输出路径

RETICULATE_PYTHON="your path from which python3"
于 2020-02-03T22:34:14.873 回答
2

安装numpy在您希望使用的 python 环境中。

pip install numpy

我发现 Reticulate 拒绝使用尚未numpy安装的 python 版本。

我通过运行解决了这个问题:

library("reticulate")
py_discover_config()

Reticulate 跳过了列出的前两个 python 版本并使用了第三个。我注意到它打印出了numpy版本,所以它可能正在寻找它作为要求。文档中没有提到它,可能应该作为一个常见问题添加。

于 2020-08-19T11:00:58.163 回答
2

它对我有用:

  • Sys.setenv(RETICULATE_PYTHON = "C:\ProgramData\Anaconda3")
  • 图书馆(网状)
  • repl_python()
于 2021-06-03T22:01:40.637 回答
1

对于 windows 用户,在创建virtualenv python之后:

virtualenv python

这可以使用 virtualenv

Sys.setenv(RETICULATE_PYTHON = "python/Scripts/python.exe")
library(reticulate)
py_config()

编辑:这适用于任何路径,例如

Sys.setenv(RETICULATE_PYTHON = "C:/Users/UserA/Anaconda3/envs/myEnv/python.exe")

为避免每次都必须这样做,请将 Sys.setenv 行添加到 RProfile:

file.edit(file.path("~", ".Rprofile"))
file.edit(".Rprofile")
于 2021-02-12T15:19:10.183 回答
1

您必须找到 .exe python 文件的路径,然后在 .Renviron 文件中指定它。

最好的方法是为您的项目创建一个 conda 环境,然后将其指定为您的网状路径。

library(reticulate)

conda_create("environment name", packages = c("pandas", "matplotlib", "seaborn"), conda = "auto") # creates conda environment for your project

conda_python("environment name") # returns the .exe python path for your environment

保留 .Renviron 文件的路径!!

要编辑 .Renviron 文件:

library(usethis)

edit_r_environ()

然后,.Renviron 文件将打开。将 .exe 路径粘贴到其中,如下所示:

RETICULATE_PYTHON="YOUR ENVIRONMENT PATH/python.exe"

记得用 / 而不是“\”粘贴它。

重新启动 R 会话并使用以下命令检查一切是否正确:

library(reticulate)

py_config()

如果一切正常,你应该得到类似的东西:

python:您的环境路径/python.exe libpython:您的环境路径/python39.dll pythonhome:您的环境路径版本:3.9.7(默认,2021 年 9 月 16 日,16:59:28)[MSC v.1916 64 位(AMD64 )] 架构:64 位 numpy:您的环境路径\lib\site-packages\numpy numpy_version:1.21.2

在此之后它应该工作:)

于 2021-11-01T15:15:03.700 回答