rPython, использующий неправильную установку python на Mac OSX
Я установил Python 2.7.8 вместе с 2.7.5, который поставляется с OSX 10.9.4.
Теперь, как я могу указать rPython
в питон 2.7.8?
Попытка № 1
Я модифицировал OSX .bash_profile
следующим образом, чтобы указать все на более новую установку Python.
export PATH=/usr/local/Cellar/python/2.7.8/bin/:$PATH:usr/local/bin:
И теперь, когда я запускаю python из терминала, он корректно запускает более новую версию
mba:~ tommy$ which python
/usr/local/Cellar/python/2.7.8/bin//python
Тем не мение, rPython
, все еще видит 2.7.5.
> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
Попытка № 2
Похоже, .bash_profile
R вообще не привыкает... поэтому я попытался изменить PATH в R. Но все же не повезло.
> Sys.getenv("PATH")
[1] "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
> Sys.setenv(PATH = "usr/local/Cellar/python/2.7.8/bin")
> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
Попытка № 3
Я пытался удалить и переустановить rPython
пакетное мышление, возможно, он использовал версию Python, найденную при установке. Не повезло тоже.
Попытка № 4
Я попытался установить из источника, чтобы увидеть, если это что-нибудь... не повезло.
Обновить
Итак, похоже, проблема не в том, что связано с самим rPython.
http://cran.r-project.org/web/packages/rPython/INSTALL
Пакет rPython зависит от Python (>= 2.7).
Требуется как Python, так и его заголовки и библиотеки. Их можно найти в пакетах python и python-dev в дистрибутивах, подобных Debian.
В системах, где сосуществуют несколько версий Python, пользователь может выбрать версию Python для использования во время установки. По умолчанию пакет будет установлен с использованием версии Python, заданной
$ python --version
Когда я запускаю это в терминале..
mba:src tommy$ python --version
Python 2.7.8
Но когда я запускаю его в R...
> system("python --version")
Python 2.7.5
Так что проблема в том, что R не использует OSX .bash_profile
, Мне нужно выяснить, как изменить PATH
вне .bash_profile
или используйте R для использования .bash_profile
,
Что еще я могу попытаться получить rPython
работать с 2.7.8
?
5 ответов
Я устанавливаю следующие команды в RStudio, надеюсь, они помогут.
> system("python --version")
Python 2.7.10
> Sys.setenv(PATH = paste("/usr/local/bin", Sys.getenv("PATH"),sep=":"))
> system("python --version")
Python 2.7.11
Я знаю, что это старый вопрос, но я столкнулся с той же проблемой, что и OP, и это решение, которое я нашел, сработало.
Во-первых, я добавил RPYTHON_PYTHON_VERSION=3
к моему ~/.bash_profile
, Вместо установки rPython
с помощью install.packages
Я скачал исходник из CRAN и установил из командной строки используя R CMD INSTALL
, Это работало нормально и обнаружил python3
версия, которую я установил в моей системе.
Я наткнулся на этот пост, пытаясь заставить R использовать желаемую версию Python и нашел решение, которое работало для меня (используя Rstudio на OSX Yosemeti).
Вот Python, который использует мой терминал, и который я хочу найти в R:
$ which python
/usr/local/bin/python
В R, system('which python')
производит /usr/bin/python
, Я вижу, что это потому, что /usr/bin
находится справа от /usr/local/bin
в Sys.getenv('PATH')
,
Я пытался изменить мой путь в ~/.Renviron
или же ~/.Rprofile
но это не решало проблему. Это потому что был другой Rprofile
файл работает прямо перед запуском ядра.
Чтобы найти все Rprofile
файлы в моей системе, я запустил эти команды:
cd /usr
sudo find . -name "*Rprofile*" -print
Один из файлов - R_HOME/library/base/R/Rprofile
- содержит некоторый код, который говорит, что он имеет дело с конфликтами PATH в моей ОС. Я думаю, что он выбрал неправильный путь из возможных вариантов. Добавив следующую строку в конец этого файла, показал правильный путь в Rstudio после перезапуска моего ядра R:
.Internal(Sys.setenv("PATH", paste("/usr/local/bin", Sys.getenv("PATH"), sep=":")))
У меня сработало то, что я указал lib и версию в install.packages, вот так
install.packages("rPython",lib= "path_to_your_R/R/library/3.1", configure.vars= "RPYTHON_PYTHON_VERSION=3")
И это действительно установлено с Python версии, которая под 3.x
Вы можете взглянуть на файл rPython INSTALL (извините, возможно, мне следует сделать его более явным). В нем есть раздел о том, как установить rPython, используя желаемую версию Python, когда несколько сосуществуют. Это говорит:
В системах, где сосуществуют несколько версий Python, пользователь может выбрать версию Python для использования во время установки. По умолчанию пакет будет установлен с использованием версии Python, заданной
$ python --version
но можно выбрать другой, если переменная окружения RPYTHON_PYTHON_VERSION установлена правильно.
Например, если он определен как
RPYTHON_PYTHON_VERSION=3.2
он попытается использовать Python 3.2 (ищет python3.2 и python3.2-config в пути). Если установлено
RPYTHON_PYTHON_VERSION=3
он будет установлен против "канонической" версии Python в системе в ветке 3.x.