强制 RStudio 使用 Python 3.6 而不是 Python 2.7

Sam*_*amo 5 python rstudio

我想在 RStudio 中执行 Python 脚本(这不是通过 R 脚本中的 reticulate 调用 Python,而是在 RStudio 中运行 Python 脚本,尽管正如我所见,使用了 reticulate)。我有一个非常简单的脚本,名为 test.py,其中包含以下命令:

print("test")
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,RStudio 使用 Python 2.7 而不是系统默认的 3.6:

> reticulate::repl_python()
Python 2.7.15 (/usr/bin/python)
Reticulate 1.10 REPL -- A Python interpreter in R.
>>> print("test")
test
>>> 
>>> 
Run Code Online (Sandbox Code Playgroud)

如何强制 RStudio 使用默认系统 Python 版本(在我的例子中为 3.6)而不是 2.7?

Python 的默认版本:

username@usernameVB:~$ python
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Run Code Online (Sandbox Code Playgroud)

编辑:我找到了这个解决方法:转到控制台并在运行 Python 脚本之前执行以下命令:

> library(reticulate)
> use_python("/usr/bin/python3")
Run Code Online (Sandbox Code Playgroud)

然后,执行您的 Python 脚本(它会选择正确的 Python 版本):

> print("test")
[1] "test"
> 
> reticulate::repl_python()
Python 3.6.7 (/usr/bin/python3)
Reticulate 1.10 REPL -- A Python interpreter in R.
>>> 
Run Code Online (Sandbox Code Playgroud)

似乎提出了有关此主题的问题: https://github.com/rstudio/rstudio/issues/3385

nfe*_*a78 1

从这个文档:

https://rstudio.github.io/reticulate/articles/versions.html

在给定系统上使用多个版本的 Python(以及给定版本中的多个环境)conda的情况并不罕见virtualenv

在这种情况下,将扫描系统上安装的各个版本的Python,以查看其中一个版本是否包含Python包(将使用第一个发现满足此要求的版本)

默认情况下,首先检查在系统 PATH 上找到的 Python 版本,然后检查 Python 的其他常规位置(例如 、 等)/usr/local/bin/python/opt/local/bin/python这就是发生在你身上的事情。

您可以通过两种方式提供有关应使用哪个版本的 Python 的提示:

a) 将RETICULATE_PYTHON环境变量的值设置为 Python 二进制文件。

请注意,如果设置此环境变量,则将始终使用指定的 Python 版本。

要设置RETICULATE_PYTHON的值,请插入以下内容:

Sys.setenv(RETICULATE_PYTHON = PATH)
Run Code Online (Sandbox Code Playgroud)

进入您的项目 Rprofile,其中PATH是您首选的 Python 二进制文件/usr/bin/python3

b) 通过调用以下函数之一(您已经在执行此选项)

功能 描述
use_python() 指定特定Python二进制文件的路径
use_virtualenv() 指定包含Python virtualenv的目录
use_condaenv() 指定Conda环境的名称