我正在尝试将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)
有什么想法吗?
答案 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)
```
答案 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")
```