1

我正在尝试在 rmarkdown 文档中添加一个 python 块。我安装了包网状然后这是我的文件:

```{r, message=FALSE, warning=FALSE, echo = FALSE}
  library(reticulate)
```

```{python, echo = FALSE, eval = FALSE}
a=1
a
#import numpy as np
#import matplotlib.pyplot as plt

## evenly sampled time at 200ms intervals
#t = np.arange(0., 5., 0.2)

## red dashes, blue squares and green triangles
#plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
#plt.show()
```

但是,在编织文档时出现此错误:(请注意,运行第二个块时会发生错误)

label: unnamed-chunk-1 (with options) 
List of 3
 $ message: logi FALSE
 $ warning: logi FALSE
 $ echo   : logi FALSE


  |                                                                       
  |....                                                             |   6%
  ordinary text without R code


  |                                                                       
  |......                                                           |   9%
label: unnamed-chunk-2 (with options) 
List of 3
 $ echo  : logi FALSE
 $ eval  : logi FALSE
 $ engine: chr "python"

Error in py_module_import(module, convert = convert) : 
  ModuleNotFoundError: No module named 'rpytools'
Calls: <Anonymous> ... remap_output_streams -> import -> py_module_import -> .Call

还补充说我在https://github.com/rstudio/reticulatehttps://rstudio.github.io/reticulate/articles/r_markdown.html上没有找到任何相关信息

我有 knitr 版本 1.20,高于 1.18,因此引擎配置应该是自动的。

4

1 回答 1

1

这可能是由于使用低于 1.2 的 RStudio 版本造成的。它在页面上隐藏得很好reticulate,但实际上导入 Python 包和运行 Python 块的某些方面似乎只在 RStudio 版本 1.2 及更高版本中受支持——也就是说,不是当前的 RStudio 稳定版本,而是你必须下载的预览版并单独安装。

这是他们在小插图中写的:

请注意,RStudio v1.2 预览版包括对使用 reticulate 在 R Notebooks 中执行 Python 块的支持。有关更多详细信息,请参阅RStudio IDE Tools for reticulate文章。

可能正因为如此,在 RStudio 1.1.53 中运行您的代码时,我会像您一样收到“ModuleNotFound”错误,并且它们会阻止编织。

在 RStudio 1.2.1139 预览版中运行它时,一切都应该是:

Reticulate 1.10 REPL -- A Python interpreter in R.
>>> a=1
>>> a
1
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> 
>>> ## evenly sampled time at 200ms intervals
>>> t = np.arange(0., 5., 0.2)
>>> 
>>> ## red dashes, blue squares and green triangles
>>> plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
[<matplotlib.lines.Line2D object at 0x000000001C2EDBE0>, <matplotlib.lines.Line2D object at 0x000000001DA99978>, <matplotlib.lines.Line2D object at 0x000000001DA99D30>]
>>> plt.show()
>>> plt.savefig("test.png")
>>> 

测试.png

于 2018-11-24T22:40:59.747 回答