【问题标题】:Reticulate not sharing state between R/Python cells or Python/Python cells in RMarkdown网状在 RMarkdown 中的 R/Python 单元或 Python/Python 单元之间不共享状态
【发布时间】:2018-08-25 17:31:22
【问题描述】:

根据设置说明,我正在尝试让 ReticulateRMarkdown 中工作。但是,我无法在单独的 Python 单元或 Python 和 R 单元之间共享状态,因为文档表明我应该能够。这是我的设置和输出:

单元 1(设置):

{r}
library(reticulate)
path_to_python <- "/Users/User/anaconda3/bin/python"
use_python(path_to_python)
knitr::knit_engines$set(python = reticulate::eng_python)
py_available(initialize = TRUE)

输出:

[1] TRUE

单元格 2(在 Python 中设置变量):

{python}
x = 2

单元格 3(尝试访问 R 中的 Python 变量):

{r}
py$x

输出:

Error in py_get_attr_impl(x, name, silent) : AttributeError: module '__main__' has no attribute 'x'

单元格 4(在 R 中设置变量):

{r}
x <- 2

单元格 5(尝试在 Python 中访问 R 变量):

{python}
r.x

输出:

Traceback (most recent call last):
  File "/var/folders/2b/dgy6vs4n3lbfy2xqwc3gqq9m0000gn/T/RtmpTqIR6P/chunk-code-108b44104ec28.txt", line 1, in <module> r.x NameError: name 'r' is not defined

单元格 6(尝试在后续 Python 单元格中访问之前的 Python 变量):

{python}
x

输出:

Traceback (most recent call last):
  File "/var/folders/2b/dgy6vs4n3lbfy2xqwc3gqq9m0000gn/T/RtmpTqIR6P/chunk-code-108b44520d158.txt", line 1, in <module> x NameError: name 'x' is not defined

任何帮助或建议将不胜感激!我已经尝试将 reticulate 指向不同的 Conda 环境和 Python 安装,但没有成功。谢谢!

【问题讨论】:

  • 我不确定为什么您会看到第一次调用 python 后看到的错误消息。我有一台带有 python2 和 python3 的 Mac。当我使用我的 python2 时,我得到一个类似于你的错误,但是当我使用我的 python3 时,文档编织没有问题。我没有 python 专业知识 - 是否有在调用 python 时运行的启动文件?

标签: python r r-markdown reticulate


【解决方案1】:

这在当前的 RStudio 中已修复,例如1.2.1114。但是,如果您像我一样坚持使用 RStudio Server Pro 1.1.456,一种解决方法是使用 reticulate::repl_python() 通过将 python 块复制粘贴到 python 控制台来运行它们。如果您需要在两者之间运行 R 块,您可以再次关闭并打开控制台 - 将保持状态。当你完成黑客攻击后,你可以毫无问题地编织整个文件。

【讨论】:

  • 这太棒了,令人惊讶的是人们没有更多地谈论它。
【解决方案2】:

我想我已经弄清楚了。我误解了网状文档,认为这意味着我可以在 RStudio 中以交互方式在 Python 单元之间共享状态。仔细阅读 Github 上的未解决问题后,似乎 RStudio 集成仍在进行中。当直接使用 knitr 编织文档时,我得到了单元格之间共享状态的预期行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2016-01-25
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多