pyenv — утилита, которая позволяет легко переключаться между несколькими версиями Python которые установлены на хосте. Это очень полезно при разработке ПО, когда имеется несколько разных верий и их нужно поддерживать.
Установка pyenv в Unix/Linux
pyenv — замечательный инструмент для управления несколькими версиями Python. Даже если у вас уже установлен Python в вашей системе, стоит установить pyenv, чтобы вы могли легко опробовать новые языковые функции или помочь внести свой вклад в проект, который находится на другой версии Python.
Рекомендуемое чтиво:
Установка virtualenv + virtualenvwrapper в Unix/Linux
И так, начнем установку…
Установка pyenv в CentOS/Fedora/RedHat
Подключаем EPEL репозиторий:
Далее, стоит установить следующие пакеты:
# yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel
Имеется простой скрипт для установки данного ПО, можно использовать:
$ cd /usr/local/src && curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
После установки, стоит настроить и потом, можно будет юзать данную тулу.
Установка pyenv в Debian/Ubuntu
Стоит установить следующие пакеты:
# apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
Имеется простой скрипт для установки данного ПО, можно использовать:
$ cd /usr/local/src && curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
После установки, стоит настроить и потом, можно будет юзать данную тулу.
Установка pyenv в MacOS
Ставим homebrew, статью можно взять тут:
Установка homebrew на Mac OS X
Выполним поиск пакета:
$ brew search pyenv
Чтобы поставить данное ПО, выполняем:
$ brew install pyenv
Перейдем к настройке.
Настройка pyenv в Unix/Linux
Открываем файл:
$ vim ~/.bashrc
Прописываем:
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
Просто добавьте этот код в конец вашего ~/ .bashrc и затем загрузите ваш профиль, чтобы загрузить эти дополнения:
Для RPM’s ОС:
$ source ~/.bash_profile
Или:
$ . ~/.bash_profile
Для DEB’s ОС:
$ source ~/.profile
Для MacOS:
$ source ~/.bash_profile
Можно уже юзать!
Использование pyenv в Unix/Linux
Для того, чтобы посмотреть какие версии python используется на данный момент, имеется команда:
$ pyenv install -l
Для установки какой-либо версии, используем:
$ pyenv install 2.7.16 && \
pyenv install 3.5.7
Смотрим что имеется в системе:
$ pyenv versions
* system
2.7.16
3.5.7
Чтобы переключится на нужную версию, используем:
$ pyenv local 2.7.16
Так же, можно будет использовать:
$ pyenv local some_project
Я пока что буду использовать:
$ pyenv local 2.7.16 3.5.7
Для глобального использования, можно выставить тоже нужную(ые) версию(и):
$ pyenv global 3.5.7 2.7.16
Можно выставить конкретную версию питона для shell оболочки, например:
$ pyenv shell 3.5.7
Как это выглядит на картинке:
Создадим песочницу:
$ pyenv virtualenv -p python2.7 2.7.16 my_project-with-2.7.16
Или:
$ pyenv virtualenv 2.7.16 my_project-with-2.7.16
Смотрим песочницы:
$ pyenv virtualenvs
Сейчас, я выставлю нужные мне версии:
$ pyenv local my_project-with-2.7.16 3.5.7
Смотрим версию питона:
$ python -V
Python 2.7.16
Смотрим где находится питон:
$ which python
/Users/captain/.pyenv/shims/python
И:
$ pyenv which python
/Users/captain/.pyenv/versions/my_project-with-2.7.16/bin/python
Для получения списка команд, множно использовать:
$ pyenv commands
--version
activate
commands
completions
deactivate
exec
global
help
hooks
init
install
local
prefix
realpath.dylib
rehash
root
shell
shims
uninstall
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
virtualenv
virtualenv-delete
virtualenv-init
virtualenv-prefix
virtualenvs
virtualenvwrapper
virtualenvwrapper_lazy
whence
which
Получить помощь можно так:
$ pyenv --help
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
Или, для какой-то конкретной команды:
$ pyenv activate --help
Usage: pyenv activate <virtualenv>
pyenv activate --unset
Activate a Python virtualenv environment in current shell.
This acts almost as same as `pyenv shell`, but this invokes the `activate`
script in your shell.
<virtualenv> should be a string matching a Python version known to pyenv.
Т.е для активации созданной среды, используем:
$ pyenv activate my_project-with-2.7.16
Для диактивации, следующая команда:
$ pyenv deactivate
Для удаления версии питона с ОС, используем:
$ pyenv uninstall 2.7.16
Для обновления pyenv, имеется конманда:
$ pyenv update
Для удаления, используйте:
$ rm -rf $PYENV_ROOT
ЗАМЕЧАНИЕ: По умолчанию, $PYENV_ROOT — ~/.pyenv.
Так же, стоит удалить следующие строки с ~/.bashrc:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Вот и все, статья «Установка pyenv в Unix/Linux» завершена.
Устанавливаешь такой это все, потом пишешь pipenv shell и наблюдаешь как он создает окружение из версии пайтон в /usr/bin/python3 и пофигу ему что ты поставил самую последнею версию, и ты печальный идешь и компилишь ее по нормальному