Как работать с pyenv, virtualenv и pipenv?

Я искал менеджер версий для Python, похожий/равный RVM (для Ruby), я нашел pyenv, но это просто переключатель, поэтому мне нужно его объединить с virtualenv (насколько я понимаю) немного трудоемко, но я мог к этому привыкнуть. Более того, я читал, что pipenv рекомендуется использовать вместо virtualenv, может ли он работать с pyenv? как?

Однако статья В чем разница между venv , pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv и т. д.? упоминает, что pyenv устарел в Python 3.6. Итак, я снова в нуле и запутался, что мне использовать? и как мне его использовать?

Система: Арх Линукс, Плазма.

Текущие (установленные) версии для Python: 2.7.14 и 3.6.4.

Что я планирую сделать: Мне нужен фреймворк, в котором, если мне по какой-либо причине понадобится работать с версиями: 3.4.7, 3.2.6, 2.6.7 и 2.3.3, я мог бы это сделать без всякой головной боли.

Надеюсь на вашу помощь, спасибо люди.


person Ουιλιαμ Αρκευα    schedule 26.01.2018    source источник
comment
Нет, pyenv не считается устаревшим; pyvenv есть.   -  person phd    schedule 27.01.2018
comment
омг, ты прав, я исправлю это. Спасибо.   -  person Ουιλιαμ Αρκευα    schedule 27.01.2018
comment
Возможный дубликат В чем разница между venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv и т. д.?   -  person Andrea Bergonzo    schedule 31.10.2018


Ответы (4)


у вас есть два варианта

  1. используйте оболочку pyenv и pyenv-virtualenv вместе.

например, вы хотите создать новый тест проекта, а также создать для него виртуальную среду.

  • pyenv установить 3.6.5
  • pyenv virtualenv 3.6.5 тест
  • компакт-диск /project_path
  • локальный тест pyenv

в следующий раз, когда вы получите доступ к каталогу проекта, он автоматически изменится на тестовую среду.

  1. используйте pyenv и pipenv вместе

во-первых, добавьте этот скрипт в конфиг env (bashrc или zshenv и т. д.)

export PIPENV_VENV_IN_PROJECT=1
PROMPT_COMMAND='prompt'
precmd() { eval "$PROMPT_COMMAND" }
function prompt()
{
    if [ ! $PIPENV_ACTIVE ]; then
      if [ `pipenv --venv 2>/dev/null` ]; then
        export PIPENV_INITPWD="$PWD"
        pipenv shell
      fi
    elif [ $PIPENV_INITPWD ] ; then
      cd "$PIPENV_INITPWD"
      unset PIPENV_INITPWD
    fi
}

потом

  • pyenv установить 3.6.5
  • оболочка пиенв 3.6.5
  • pip установить pipenv
  • компакт-диск /project_path
  • pipenv --python 3.6.5

в следующий раз, когда вы получите доступ к каталогу, он изменится на правильное отверстие (примечание: вы должны использовать оболочку pyenv 3.6.5, прежде чем получить доступ к каталогу проекта)

person dameng    schedule 19.07.2018

Если я правильно помню, virtualenv больше для того, чтобы ваше приложение не мешало другим в той же работающей системе. Если вы используете ОС на базе UNIX (Linux/FreeBSD/macOS), вы можете скомпилировать python (с помощью configure --prefix=/opt/python/) и псевдоним двоичного исполняемого файла в вашем .bashrc или bash_profile.

alias python363='/opt/python363/bin/python3'

или если вы хотите сделать его общесистемным и иметь доступ к root, вы можете сделать символическую ссылку ln -s /opt/python363/bin/python3 /usr/bin/python363 (например, для версии 3.6.3).

затем выполните файл с помощью python363 /path/to/your/script.py

Есть ли лучший способ сделать это? Возможно, но это одна из альтернатив вашему затруднительному положению, хотя и не самая элегантная.

  • ПРИМЕЧАНИЕ. Вам также нужно будет использовать псевдоним для команды pip, установленной с этой конкретной версией, чтобы установить библиотеки в правильную версию.

то есть в .bashrc или bash_profile

alias pip363='/opt/python363/bin/pip3'

или как root с символической ссылкой

 ln -s /opt/python363/bin/pip3 /usr/bin/pip363
person Victisomega    schedule 26.01.2018

pyenv поддерживает виртуальные окружения

Просто установите нужные версии Python, например:

pyenv install 3.6.4
pyenv install 3.6.0

Выберите нужную версию Python с аргументом global

pyenv global 3.6.4

Затем создайте виртуальную среду (я назову ее myve)

pyenv virtualenv myve

И активируйте его с помощью

pyenv activate myve

Единственная разница с вашим типичным virtualenv, созданным вручную, — это местоположение и то, что у вас будет для него имя, но, в конце концов, это довольно удобно и похоже на то, как работает virtualenvwrapper.

Проверьте, какая виртуальная среда или версия активирована с помощью

pyenv versions

Деактивировать с помощью

pyenv deactivate 

Удалите версию virtualenv или Python с помощью uninstall

pyenv uninstall myve
person Isaac Nequittepas    schedule 19.03.2018

Недавно старый способ

Используйте Pyenv и первым делом установите плагин virtualenv. Превращает именование и использование виртуальных сред в прелесть.

*

Новый способ

По-прежнему используйте Pyenv для поддержки версий Python за кулисами. Используйте pipenv в качестве инструмента управления пакетами + виртуальной среды. Единственный трюк — добавить export PIPENV_PYTHON="$PYENV_ROOT/shims/python" в файл .rc (.bashrc или .zshrc) после того, как PYENV_ROOT обновится с помощью своей прокладки. pyenv which python позже может пойти не так, а pipenv — нет. Подробнее я расскажу в своем сообщении в блоге, беззастенчиво упомянув вилку.

person The Nomadic Coder    schedule 02.10.2018
comment
Итак, я только что установил pyenv после того, как использовал pipenv и установил его некоторое время... похоже, чтобы привести мою систему в правильное состояние, я должен удалить свой оригинальный pipenv и переустановить его в каждый из pyenv установил версии Python? Это правильно? - person monkut; 17.10.2018