如何指定rmarkdown使用python3而不是python 2?

时间:2016-08-21 21:49:46

标签: r r-markdown python-3.5

我正在尝试将rthon作为rmarkdwon代码块运行。我是sucessfull但默认使用rmarkdown使用python2并且我希望它使用python 3.我在安装了python 2.7.6的Ubuntu上运行它并且我安装了带有pytthon 3.5的anaconda,这是我想要rmarkdown使用的。 这是rmarkdown

中python块的代码和输出
```{python}
import sys
print (sys.version)
```

和输出:

2.7.6 (default, Jun 22 2015, 17:58:13) 

有什么想法吗?

4 个答案:

答案 0 :(得分:13)

您可以添加engine.path = '/path/to/python3'来覆盖python(2)可执行文件。例如,

---
title: "python"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{python}
import sys
print(sys.version)
```

```{python, engine.path = '/usr/bin/python3'}
import sys
print(sys.version)
```

enter image description here

答案 1 :(得分:1)

您可以使用R chunk选择所需的python版本(默认情况下):

```{r setup, echo=FALSE}
library(knitr)
opts_chunk$set(engine.path = '/usr/bin/python3')
```

从现在开始,你的python块将使用Python3:

```{python}
import sys
print(sys.version)
```

这种选择python版本的方法避免了将engine.path变量添加到每个代码块。

答案 2 :(得分:0)

实际上,如果您正在运行Python 3.x,我必须执行以下操作(显然您的Python3可执行文件的路径可能不同):

```{r Setup, echo=FALSE}
library(knitr)
opts_chunk$set('python', engine.path='/usr/local/Cellar/python3/3.6.3/bin/python3')

```

然后可以使用python创建一个块,它将以正确的版本运行:

```{python, cache=TRUE, echo = FALSE, eval = TRUE}

import sys
print(sys.version)

```

答案 3 :(得分:0)

您可以使用网状包并在开头插入一个R块:

```{r}
library(reticulate)
use_python("/usr/local/bin/python3")
```