Как я могу сделать домашние питоны и пиенцы вместе?
После перехода на python 3.4.3 из 2.7.9 (что было довольно просто), я часто хочу проверить некоторые мои скрипты с помощью python 2.7.9, прежде чем делиться ими с коллегами. Я использую платформу OSX yosemite со всем, что составлено из homebrew.
Ситуация была довольно уродливой (установка PATH
es и PYTHONPATH
на каждом шаге) - пока я не обнаружил pyenv, что делает это очень легко и легко устанавливается с использованием доморощенного. Пока что так хорошо.
Однако теперь, когда я использую эту версию python, она не обязательно хорошо сочетается с версией homebrew. Более того, я обнаружил, что могу вернуться к системному python, и в более общем плане, что pyenv мог получить доступ к этому:
$ pyenv versions
system
2.7.9
* 3.4.3 (set by /usr/local/var/pyenv/version)
но , как я могу добавить записи для python
, скомпилированные homebrew?
Ответы
Ответ 1
Вы можете установить pyenv в свой домашний каталог (как описано в руководстве по установке pyenv), а затем создать символическую ссылку в ~/.pyenv/versions
до $(brew --cellar)/python
:
ln -s $(brew --cellar python)/* ~/.pyenv/versions/
Как работает Homebrew в настоящее время, это поднимет как 2.x, так и 3.x.
Ответ 2
Хорошо, если вы хотите, чтобы пиенские питоны и доморощенные питоны жили вместе, вам нужно сделать имя доморощенного питонов чем-то другим, кроме версии. В противном случае они столкнутся с именами каталогов, которые использует pyenv. Например, если вы хотите установить pyenv python 2.7.11 и homebrew python 2.7.11, вы можете сделать что-то вроде этого.
for i in `ls $(brew --cellar python)/`; do
ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew;
done
for i in `ls $(brew --cellar python3)/`; do
ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew;
done
По существу, это создаст каталог в $HOME/.pyenv/versions, добавленный с '- brew', чтобы он не столкнулся с пиенскими питонами.
Ответ 3
Просто чтобы добавить к ответу @johnizzo1, python2 теперь является [email protected]
, поэтому вы должны изменить цикл python3 for на что-то вроде:
for i in 'ls $(brew --cellar python)/'; do
ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew;
done
for i in 'ls $(brew --cellar [email protected])/'; do
ln -s $(brew --cellar [email protected])/$i $HOME/.pyenv/versions/$i-brew;
done