我正在寻找类似于/等于 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,我可以毫不费力地做到这一点屁股。
我希望你的帮助,谢谢大家。
答案 0 :(得分:1)
您有两个选择
例如,您想要创建一个新的项目测试,并且还想要为其创建虚拟环境。
下次,您访问项目目录,它将自动更改为测试环境
首先,将此脚本添加到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 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
执行该文件有更好的方法吗?可能,但它是你的困境的一种替代方案,尽管不是最优雅的。
即。在.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
pyenv global 3.6.4
然后创建一个virtualenv(我将其命名为myve)
pyenv virtualenv myve
使用激活
激活它pyenv activate myve
与您手动创建的典型virtualenv的唯一区别在于位置,并且您将为其命名,但最终,它非常舒适且与virtualenvwrapper的工作方式类似。
使用
检查激活哪个virtualenv或版本pyenv versions
使用
停用pyenv deactivate
使用uninstall
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中详细介绍了一下插件。