Импорт matplotlib с reticulate в R
Я только начал использовать сетчатый пакет в R,и я все еще получаю некоторые перегибы. В частности, импорт matplotlib идет не очень хорошо. Я пробовал два разных способа, с разными сообщениями об ошибках для каждого.
Во-первых, используя repl_python в интерактивной оболочке RStudio:
library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
py_discover_config()
repl_python()
import matplotlib.pyplot as plt
Оболочка REPL Python, которая открывается, кажется, имеет правильную версию и все такое, но когда я пытаюсь импортировать matplotlib.pyplot, я вижу следующее:
ImportError: в /lib/x86_64 с-линукс-дистрибутив GNU/сайт libz.так.1: версия `ZLIB_1.2.9' не найден (требуется /домашний/Крейг/anaconda3/Либ/питон3.6/сайте-пакетов/библиотек matplotlib/../../.././libpng16.так.16)
Установка zlib (с помощью sudo apt-get install lib64z1-dev lib64z1), казалось, ничего не изменила. FWIW, import matplotlib работал просто отлично, пока мне не нужно pyplot.
Я также попытался сделать то же самое в документе R Markdown:
```{r}
library(reticulate)
py_discover_config()
```
```{python}
import matplotlib.pyplot as plt
```
На этот раз я увидел:
Ошибка в py_get_attr_impl(x, name, silent): AtributeError: модуль 'matplotlib' не имеет атрибута' pyplot ' вызовы:... $.питон.встроенный.объект - > py_get_attr - > py_get_attr_impl ->.Выполнение вызова остановлено
Есть идеи, что здесь может происходить?
Спасибо!
Обновление: Как я уже упоминал в комментариях, установка версии для разработчиков reticulate устраняет некоторые проблемы, но не все. Если я попытаюсь запустить этот Rmd:
```{r}
library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
```
```{python}
import matplotlib.pyplot as plt
```
Я получаю следующие сообщения об ошибках:
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
Когда я пытался гуглить текст ошибки, похожая ошибка с xcb, кажется, возникает в контексте, который, насколько я могу судить, не столь релевантен.
2 ответов:
Я смог заставить вещи работать, изменив кодовый блок R Markdown на следующий:
Я до сих пор не совсем понимаю, почему, но кажется, что```{r} library(reticulate) use_python('/usr/bin/python3') ``` ```{python} import matplotlib.pyplot as plt ```reticulateне очень хорошо играет с инсталляциями анаконды. Может быть, это как-то связано с тем, что анаконда была настроена на хорошую работу с интерактивным блокнотом Jupyter.
Я был в состоянии заставить его работать с моим стадион conda установить сим связывания файла стадион conda Либ в /lib/x86_64 с-Линукс-гну/.
ln -s -f /opt/miniconda/lib/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1Я заметил, что если я запускал python один с тем же импортом, он работал нормально. Похоже, что reticulate не "видит" conda lib в качестве источника для libz, но ищет в каталоге
/lib/x86_64-linux-gnu/.Python: 3.6
Conda: 4.5.1
ОС: Ubuntu 14.04.1 LTS
Comments