我试图使用reticulate
在一个RMarkdown文档中运行一些简单的Python代码。我发现,如果Matplotlib在conda环境中,我在尝试运行python代码块时会出错,但我可以直接从R运行python。以下是我所看到的一个简单示例:
---
title: "Reticulate Test"
date: "9/21/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(reticulate)
use_condaenv('Toy_MPL') # this environment contain matplotlib and produces the error
#use_condaenv('Toy') # this environment does not contain matplotlib and no error
```
```{r}
# this works regardless of which environment I use
pysys <- import('sys')
pysys$version
```
[1] "3.8.5 (default, Sep 4 2020, 02:23:17) \n[Clang 10.0.0 ]"
```{python, engine.path = '/opt/miniconda2/envs/Toy_MPL/bin/python'}
# if Toy_MPL conda environment is used, the error is generated
# if Toy conda environment is used, I get the same output as above
import sys
print(sys.version)
```
Error in py_call_impl(callable, dots$args, dots$keywords) :
TypeError: use() got an unexpected keyword argument 'warn'
我的第一个想法是,在安装Matplotlib时,reticulate
没有看到安装在conda environment lib/
文件夹中的各种系统库-Matplotlib附带了许多依赖项。我尝试了以下方法,但均无效:
use_python()
作为use_condaenv()
的补充或替代engine.path
Error in if (has_compatible_arch && has_preferred_numpy) valid_python_versions <- c(valid_python_versions, : missing value where TRUE/FALSE needed
traceback()
给我一个来自netracite.so的CPP堆栈跟踪,这是不可解释的
我的解释是,为RMarkdown创建的环境没有指向正确的库位置,但我无法确定如何正确设置它
我也遇到了类似的问题。我是python新手,所以我使用Anaconda Navigator来管理我的python环境和包。我通过以下步骤解决了我的问题
如果您仍然希望将matplotlib与Networkite一起使用,这不会有太大帮助,但如果不使用matplotlib,至少应该让脚本再次运行
在我最初的问题中,我提到了this问题,其中有人建议将matplotlib降级到3.2.0版,因为Networkite并没有随着matplotlib的更改而更新。我进一步跟进了这一建议,并(目前)找到了解决方案
TL;博士
删除matplotlib的pip和conda安装版本,然后使用conda安装matplotlib版本3.2.2(非pip)即可解决此问题。使用pip安装matplotlib会导致其他错误
细节
在对other question的答复中,建议:
我尝试了这个,结果发现了其他我也无法追踪的错误。因此,我卸载了matplotlib,然后用
希望能回到我原来的地方。这也不起作用,新的错误仍然存在。然后我用pip完全删除了matplotlib,并用conda重新安装了3.3.1版:
这让我回到matplotlib版本3.3.1和我在问题中提到的原始错误。然后,我尝试使用conda安装matplotlib 3.2版:
安装的版本是3.2.2,而不是响应中建议的3.2.0,但当我这样做时,原来的问题似乎得到了解决
在本例中,pip和conda之间的依赖解析显然存在差异,conda提供了一个matplotlib版本,可以很好地处理
reticulate
。然而,在这一点上,我不知道有什么区别相关问题 更多 >
编程相关推荐