如何使用pyenv,virtualenv和pipenv?

时间:2018-01-26 22:35:52

标签: python virtualenv rvm pyenv pipenv

我正在寻找类似于/等于 RVM (对于Ruby)的Python版本管理器,我发现 pyenv 但它只是一个切换器,所以我' d需要将它与 virtualenv (我的理解到目前为止)结合起来,有点费力,但我可以习惯它。此外,我建议使用 pipenv 代替 virtualenv ,因此它可以与 pyenv 一起使用吗?如何?

然而,文章What is the difference between venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv, etc?提到 pyenv 在Python 3.6中已弃用。所以我在零和混淆,我应该使用什么?我应该如何使用它?

系统:Arch Linux,Plasma。

Python的当前(已安装)版本:2.7.14和3.6.4

我打算做什么:我需要一个框架,如果由于任何原因我需要使用版本:3.4.7,3.2.6,2.6.7和2.3.3,我可以毫不费力地做到这一点屁股。

我希望你的帮助,谢谢大家。

4 个答案:

答案 0 :(得分:1)

您有两个选择

  1. 一起使用pyenv和pyenv-virtualenv包装器。

例如,您想要创建一个新的项目测试,并且还想要为其创建虚拟环境。

  • pyenv安装3.6.5
  • pyenv virtualenv 3.6.5测试
  • cd / 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
  • pyenv shell 3.6.5
  • pip install pipenv
  • cd / project_path
  • pipenv --python 3.6.5

下次访问目录时,它将更改为正确的通风口(注意:访问项目目录之前,应使用pyenv shell 3.6.5)

答案 1 :(得分:0)

如果我没记错的话,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

答案 2 :(得分:0)

pyenv支持virtualenvs

只需安装所需的python版本,例如:

pyenv install 3.6.4
pyenv install 3.6.0

使用参数global

选择所需的python版本
pyenv global 3.6.4

然后创建一个virtualenv(我将其命名为myve)

pyenv virtualenv myve

使用激活

激活它
pyenv activate myve

与您手动创建的典型virtualenv的唯一区别在于位置,并且您将为其命名,但最终,它非常舒适且与virtualenvwrapper的工作方式类似。

使用

检查激活哪个virtualenv或版本
pyenv versions

使用

停用
pyenv deactivate 

使用uninstall

删除virtualenv或python版本
pyenv uninstall myve

答案 3 :(得分:0)

最近使用的方法

使用Pyenv,首先要做的是安装virtualenv插件。赋予命名和使用虚拟环境的魅力。

*

新方法

仍然使用Pyenv在后台维护python版本。使用pipenv作为软件包管理+虚拟环境工具。唯一的窍门是在使用垫片填充程序更新PYENV_ROOT之后,将 export PIPENV_PYTHON="$PYENV_ROOT/shims/python" 添加到.rc文件(。bashrc或.zshrc) pyenv which python 稍后可能会出错,但是pipenv不会出错。我在blog post中详细介绍了一下插件。