web-dev-qa-db-fra.com

Impossible de changer le chemin python dans réticulé (R)

Les premières lignes que j'exécute lors du lancement de ma session rstudio sont:

library(reticulate)
use_python("/usr/local/lib/python3.6/site-packages")

Cependant, lorsque j'exécute py_config(), il apparaît comme utilisant toujours l'installation par défaut python 2.7.

Il s'agit d'un problème b.c Je ne peux pas importer de modules installés pour python3. Une idée pourquoi cela ne fonctionne pas? J'ai suivi la documentation assez attentivement.

17
hackerman

J'ai observé que ni la technique "use_python ('path')" ni la tactique de Sys.setenv (RETICULATE_PYTHON = 'path') dans .RProfile ont fonctionné pour moi (bien sûr, je suis sûr que cela a dû fonctionner pour les autres.)

Dans tous les cas, la ligne au terminal,

which -a python python3

a produit deux chemins au choix (un pour python2 et un pour python3 installé sur mon mac), alors j'ai pu créer un fichier ".Renviron" dans mon répertoire personnel avec cette seule ligne:

RETICULATE_PYTHON="/usr/local/bin/python3"

Après avoir redémarré RStudio, library(reticulate) active le python3 souhaité et repl_python() ouvre une fenêtre interactive python3, etc. etc.

10
George D Girton

use_python("path/to/python3") définitivement ne fonctionne pas , bien que Reticulate Python version configuration article le dit, ne le croyez pas! :-)

J'ai essayé de définir l'interpréteur avec la version actuelle de Reticulate (1.13), et le package m'a donné une réponse très honnête:

> library("reticulate")
> repl_python()
Python 2.7.15 (/usr/bin/python)
Reticulate 1.13 REPL -- A Python interpreter in R.
> use_python('/usr/bin/python3', require=T)
ERROR: The requested version of Python ('/usr/bin/python3') cannot be
used, as another version of Python ('/usr/bin/python') has already been
initialized. Please restart the R session if you need to attach
reticulate to a different version of Python.
Error in use_python("/usr/bin/python3", require = T) : 
  failed to initialize requested version of Python

Heureusement, mettre un fichier .Renviron Contenant la ligne RETICULATE_PYTHON="/path/to/python3" Dans le répertoire personnel de l'utilisateur fonctionne :

> library("reticulate")
> py_config()
python:         /usr/bin/python3
libpython:      /usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so
pythonhome:     /usr:/usr
version:        3.6.8 (default, Oct  7 2019, 12:59:55)  [GCC 8.3.0]
numpy:           [NOT FOUND]

NOTE: Python version was forced by RETICULATE_PYTHON

Enfin, voici la valeur ajoutée de ma réponse:

Vous pouvez configurer l'interpréteur Reticulate Python pour tous les utilisateurs en ajoutant la ligne RETICULATE_PYTHON Au fichier global Renviron. Il se trouve généralement dans le etc sous-répertoire du répertoire personnel de R. Vous pouvez découvrir où se trouve le répertoire principal de R en exécutant la fonction R.home() dans l'interpréteur R. Dans mon cas (Ubuntu 18.04.3 LTS), c'était /usr/lib/R , j'ai donc édité /usr/lib/R/etc/Renviron. Vous avez évidemment besoin des droits d'administrateur pour ce faire.

0
Laryx Decidua

Vous devez passer le chemin vers le binaire Python dans use_python().

Si votre système d'exploitation par défaut Python était 2.7:

library(reticulate)

Vous pouvez utiliser sys pour vérifier les versions:

sys <- import("sys")

La version serait 2.7:

sys$version
[1] "2.7.10 (default..."

Si vous le changez ensuite en utilisant `use_python ():

use_python('/usr/local/bin/python3')

Vous verriez que reticulate utilise maintenant un noyau différent:

sys$version
[1] "3.6.4 (default..."
0
clemens