我想在 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
从这个文档:
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环境的名称 |