无法更改网格(R)中的python路径

时间:2018-05-03 01:19:29

标签: r reticulate

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

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

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

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

7 个答案:

答案 0 :(得分:7)

我观察到.RProfile中的“ use_python('path')”技术和Sys.setenv(RETICULATE_PYTHON ='path')的策略对我来说都不起作用(当然,我确信它必须对其他人也有用)。 )

在任何情况下,终端上的行

which -a python python3

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

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

重新启动RStudio之后,library(reticulate)激活所需的python3,而repl_python()打开python3交互式窗口,等等。

答案 1 :(得分:4)

在Mac OSX上唯一适合我的方法是在终端中执行以下命令:

touch $HOME/.Renviron

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

vim $HOME/.Renviron

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

RETICULATE_PYTHON="/anaconda3/bin/python"

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

RETICULATE_PYTHON="your path from which python3"

答案 2 :(得分:2)

对我有用:

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

在首次使用网状结构之前设置RETICULATE_PYTHON似乎很重要。

答案 3 :(得分:1)

use_python("path/to/python3")肯定不起作用,尽管Reticulate Python version configuration article如此。不要相信! :-)

我尝试将解释器设置为当前的Reticulate版本(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的{​​{1}}文件放入用户的主目录可以工作

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行来为所有用户配置Reticulate Python解释器。通常可以在R主目录的Renviron子目录中找到它。您可以通过运行R解释器中的etc函数来找到R的家。以我的情况(Ubuntu 18.04.3 LTS)为R.home(),所以我编辑了/usr/lib/R。您显然需要管理员权限才能做到这一点。

答案 4 :(得分:1)

它对我有用:

  • Sys.setenv(RETICULATE_PYTHON = "C:\ProgramData\Anaconda3")
  • 图书馆(网状)
  • repl_python()

答案 5 :(得分:0)

在您要使用的python环境中安装numpy

pip install numpy

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

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

library("reticulate")
py_discover_config()

Reticulate跳过了列出的python的前两个版本,并使用了第三个版本。我注意到它打印了numpy版本,因此它可能正在寻找它的要求。 docs中未提及它,应该将其添加为常见问题。

答案 6 :(得分:0)

对于 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")