RStudio descobre a instalação do Python pyenv, mas não consigo executar processos do Python

Oct 03 2020

Estou tentando executar o Python em RStudio. Instalei o Python 3.8.5 via pyenv e criei um ambiente virtual com pyenv virtualenv (que chamo de venv-Rstudio) na minha pasta de projeto RStudio. Com base nas instruções fornecidas aqui , acho que consegui indicar corretamente ao RStudio qual ambiente Python usar:

>Sys.setenv(RETICULATE_PYTHON="/Users/my_username/.pyenv/versions/venv-Rstudio/bin/python")
> py_discover_config()
python:         /Users/my_username/.pyenv/versions/3.8.5/envs/venv-Rstudio/bin/python
libpython:      [NOT FOUND]
pythonhome:     /Users/my_username/.pyenv/versions/3.8.5:/Users/my_username/.pyenv/versions/3.8.5
version:        3.8.5 (default, Oct  1 2020, 21:50:37)  [Clang 12.0.0 (clang-1200.0.32.2)]
numpy:          /Users/my_username/.pyenv/versions/3.8.5/envs/venv-Rstudio/lib/python3.8/site-packages/numpy
numpy_version:  1.18.5

Ao tentar chamar o Python, recebo o seguinte erro:

> py_config()
Error: Python shared library not found, Python bindings not loaded.
Use reticulate::install_miniconda() if you'd like to install a Miniconda Python environment.

Suspeito que isso tenha algo a ver com o libpython: [NOT FOUND]visto acima, mas certifiquei-me de que o libpython esteja instalado no ambiente virtual venv-Rstudio:

(venv-Rstudio) my_username@MBP15 Rstudio % pip list
Package                Version
---------------------- ---------
...
Keras                  2.4.3
Keras-Preprocessing    1.1.2
libpython              0.2
Markdown               3.2.2
multidict              4.7.6
numpy                  1.18.5
...

Alguma ideia do que pode estar faltando e como consertar isso? Estou executando o macOS 10.15.7 Catalina, RStudio 1.3 com R versão 4.0.2.

Respostas

1 gaspanic Oct 03 2020 at 00:12

Depois de postar minha pergunta, ela apareceu na lista Relacionada , e essa resposta de @nucholab resolveu meu problema. Resumindo, a reinstalação do Python com pyenv usando o seguinte comando ativa as bibliotecas compartilháveis:

env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.8.5 

Depois disso e recriar meu ambiente virtual (e para constar, instalar o numpy), carregar Python no RStudio funciona como esperado:

> py_config()
python:         /Users/my_username/.pyenv/versions/3.8.5/envs/venv-Rstudio/bin/python
libpython:      /Users/my_username/.pyenv/versions/3.8.5/lib/libpython3.8.dylib
pythonhome:     /Users/my_username/.pyenv/versions/3.8.5:/Users/andreas/.pyenv/versions/3.8.5
version:        3.8.5 (default, Oct  2 2020, 13:54:11)  [Clang 12.0.0 (clang-1200.0.32.2)]
numpy:          /Users/my_username/.pyenv/versions/3.8.5/envs/venv-Rstudio/lib/python3.8/site-packages/numpy
numpy_version:  1.19.2
tensorflow:     [NOT FOUND]

NOTE: Python version was forced by RETICULATE_PYTHON