cjo*_*ley 8 python r matplotlib reticulate
我刚刚开始在R中使用网状包,我仍然会发现一些问题.特别是,导入matplotlib并不顺利.我尝试了两种不同的方式,每种方式都有不同的错误信息.
首先,在RStudio的交互式shell中使用repl_python:
library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
py_discover_config()
repl_python()
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
打开的REPL Python shell似乎有正确的版本和所有内容,但是当我尝试导入matplotlib.pyplot时,我看到以下内容:
ImportError:/lib/x86_64-linux-gnu/libz.so.1:找不到版本`ZLIB_1.2.9'(/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/../ ../.././libpng16.so.16)
安装zlib(使用sudo apt-get install lib64z1-dev lib64z1)似乎没有改变任何东西.import matplotlib只要我不需要,FWIW 工作得很好pyplot.
我也尝试在R Markdown文档中做同样的事情:
```{r}
library(reticulate)
py_discover_config()
```
```{python}
import matplotlib.pyplot as plt
```
Run Code Online (Sandbox Code Playgroud)
这次我看到:
py_get_attr_impl(x,name,silent)出错:AtributeError:模块'matplotlib'没有属性'pyplot'调用:... $ .python.builtin.object - > py_get_attr - > py_get_attr_impl - > .Call执行暂停
任何想法可能会发生在这里?
谢谢!
更新:正如我在评论中提到的,安装网格的开发者版本修复了一些问题,但不是全部.如果我尝试运行此Rmd:
```{r}
library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
```
```{python}
import matplotlib.pyplot as plt
```
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Error in py_run_string_impl(code, local, convert) :
ImportError: /home/craig/anaconda3/lib/python3.6/site-packages/PyQt5/../../../libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds
Detailed traceback:
File "<string>", line 1, in <module>
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 116, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/__init__.py", line 60, in pylab_setup
[backend_name], 0)
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in <module>
from .backend_qt5 import (
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 18, in <module>
import matplotlib.backends.qt_editor.figureoptions as figureoptions
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/qt_editor/figureoptions.py", line 20, in <module>
Calls: <Anonymous> ... force -> py_run_string -> py_run_string_impl -> .Call
Execution halted
Run Code Online (Sandbox Code Playgroud)
当我尝试使用谷歌搜索错误文本时,与xcb类似的错误确实似乎出现在一个上下文中,据我所知,这并不是那么相关.
我能够通过将 R Markdown 代码块更改为读取来使事情工作:
```{r}
library(reticulate)
use_python('/usr/bin/python3')
```
```{python}
import matplotlib.pyplot as plt
```
Run Code Online (Sandbox Code Playgroud)
我仍然不太明白为什么,但似乎这reticulate对 anaconda 安装并不友好。也许这与 anaconda 被设置为与交互式 Jupyter 笔记本一起工作有关。