2

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

但是文章venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv 等有什么区别?在 Python 3.6 中不推荐使用pyenv。所以我又归零了,我应该用什么?我应该如何使用它?

系统:Arch Linux,等离子。

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

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

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

4

4 回答 4

3

你有两个选择

  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 外壳 3.6.5
  • 点安装 pipenv
  • cd /project_path
  • pipenv --python 3.6.5

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

于 2018-07-19T10:15:57.840 回答
0

pyenv 支持虚拟环境

只需安装您想要的 python 版本,例如:

pyenv install 3.6.4
pyenv install 3.6.0

使用参数选择您想要的 python 版本global

pyenv global 3.6.4

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

pyenv virtualenv myve

并用 activate 激活它

pyenv activate myve

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

检查哪个 virtualenv 或版本被激活

pyenv versions

停用

pyenv deactivate 

删除 virtualenv 或 python 版本uninstall

pyenv uninstall myve
于 2018-03-19T02:04:03.377 回答
0

最近的老方法

使用 Pyenv,你要做的第一件事就是安装virtualenv插件。使命名和使用虚拟环境成为一种魅力。

*

新方式

仍然使用 Pyenv 在后台维护 python 版本。使用 pipenv 作为包管理 + 虚拟环境工具。唯一的技巧是在 PYENV_ROOT 使用它的 shim 更新后添加export PIPENV_PYTHON="$PYENV_ROOT/shims/python"到 .rc 文件(.bashrc 或 .zshrc) 。pyenv which python以后可能会出错,但 pipenv 不会。我在我的文中进行了更详细的介绍,无耻地提到了一个插件。

于 2018-10-02T22:12:02.737 回答
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'

或作为带有符号链接的根

 ln -s /opt/python363/bin/pip3 /usr/bin/pip363
于 2018-01-26T22:49:36.713 回答