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

hac*_*man 11 r python-3.x reticulate

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

library(reticulate)
use_python("/usr/local/lib/python3.6/site-packages")
Run Code Online (Sandbox Code Playgroud)

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

这是一个问题,因为我无法导入已为python3安装的任何模块。知道为什么这行不通吗?我非常仔细地遵循了文档。

小智 20

它对我有用:

Sys.setenv(RETICULATE_PYTHON = "/usr/bin/python3")
library(reticulate)
Run Code Online (Sandbox Code Playgroud)

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


Geo*_*ton 10

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

无论如何,终端上的线路

which -a python python3
Run Code Online (Sandbox Code Playgroud)

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

RETICULATE_PYTHON="/usr/local/bin/python3"
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,是的,在我的例子中,它是通过快捷方式“cd ~”或简单地“cd”到达的目录 (2认同)
  • 这是经过几个小时的搜索后的解决方案。非常感谢你。 (2认同)

Lar*_*dua 9

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

我尝试使用当前的 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
Run Code Online (Sandbox Code Playgroud)

幸运的是,将.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
Run Code Online (Sandbox Code Playgroud)

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

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


Bry*_*ler 6

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

touch $HOME/.Renviron
Run Code Online (Sandbox Code Playgroud)

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

vim $HOME/.Renviron
Run Code Online (Sandbox Code Playgroud)

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

RETICULATE_PYTHON="/anaconda3/bin/python"
Run Code Online (Sandbox Code Playgroud)

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

RETICULATE_PYTHON="your path from which python3"
Run Code Online (Sandbox Code Playgroud)