pyenv,virtualenv,virtualenvwrapper

1. 概述

pyenv是用于多版本python之前切换。

virtualenv 用于创建隔离的“虚拟” python环境的工具。

virtualenv 是一个用来创建完全隔离的 Python 虚拟环境的工具,可以为每个项目工程创建一套独立的 Python 环境,从而可以解决不同工程对 Python 包,或者版本的依赖问题。假如有 A 和 B 两个工程,A 工程代码要跑起来需要 requests 1.18.4,而 B 工程跑起来需要 requests 2.18.4,这样在一个系统中就无法满足两个工程同时运行问题了。最好的解决办法是用 virtualenv 给每个工程创建一个完全隔离的 Python 虚拟环境,给每个虚拟环境安装相应版本的包,让程序使用对应的虚拟环境运行即可。这样既不影响系统 Python 环境,也能保证任何版本的 Python 程序可以在同一系统中运行。

一种可行的解决方案是,对virtualenv进一步封装,将所有的虚拟环境目录全都集中起来,比如放到 ~/virtualenvs/,并对不同的虚拟环境使用不同的目录来管理。

最佳实践:使用 pyenv 安装任何版本的 Python,然后用 virtualenvwrapper 创建虚拟环境时指定需要的 Python 版本路径,这样就可以创建任何版本的虚拟环境.

2. pyenv

2.1 安装

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

2.2 设置环境变量

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

2.3 添加pyenv init到bashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

2.4 使能shell

exec "$SHELL"

2.5 用法

2.5.1 查询

pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5.0
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.6
  2.6.7
  2.6.8
  2.6.9
  2.7.0
  2.7-dev
  2.7.1
  2.7.2
  2.7.3
  2.7.4
  2.7.5
  2.7.6
  2.7.7
  2.7.8
  2.7.9
  2.7.10
  2.7.11
  2.7.12
  2.7.13
  2.7.14
  2.7.15
  2.7.16
  2.7.17
  3.0.1
  3.1.0
  3.1.1
  3.1.2
  3.1.3
  3.1.4
  3.1.5
  3.2.0
  3.2.1
  3.2.2
  3.2.3
  3.2.4
  3.2.5
  3.2.6
  3.3.0
  3.3.1
  3.3.2
  3.3.3
  3.3.4
  3.3.5
  3.3.6
  3.3.7
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.4.3
  3.4.4
  3.4.5
  3.4.6
  3.4.7
  3.4.8
  3.4.9
  3.4.10
  3.5.0
  3.5-dev
  3.5.1
  3.5.2
  3.5.3
  3.5.4
  3.5.5
  3.5.6
  3.5.7
  3.5.8
  3.5.9
  3.6.0
  3.6-dev
  3.6.1
  3.6.2
  3.6.3
  3.6.4
  3.6.5
  3.6.6
  3.6.7
  3.6.8
  3.6.9
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.7.3
  3.7.4
  3.7.5
  3.7.5rc1
  3.8.0
  3.8-dev
  3.9-dev

2.5.2安装

pyenv install -v 3.7.5
pyenv install -v 2.7.16

说明:3.8.0装virtualenvwrapper会有问题,所以安装3.7.5。

2.5.3 切换

tom@tom-linuxer:~/work/flask-all$ pyenv global 3.8.0
tom@tom-linuxer:~/work/flask-all$ pyenv versions
  system
  2.7.16
* 3.8.0 (set by /home/tom/.pyenv/version)

通过pyenv global切换python版本。

3. virtualenvwrapper

3.1 安装

pip install virtualenvwrapper

3.2配置

# Add virtualenvwrapper path
export WORKON_HOME=~/work/virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/home/tom/.pyenv/versions/3.7.5/bin/python
source /home/tom/.pyenv/versions/3.7.5/bin/virtualenvwrapper.sh

说明:

tom@tom-linuxer:~/work/virtualenvs/upgrade-platform$ which virtualenvwrapper.sh
/home/tom/.pyenv/shims/virtualenvwrapper.sh

配置成/home/tom/.pyenv/shims/virtualenvwrapper.sh这个路径,总是报错。

使用

lsvirtualenv:   列出所有虚拟环境

tom@tom-linuxer:~$ lsvirtualenv 
upgrade-platform
================

workon:  激活/切换 虚拟环境 
tom@tom-linuxer:~$ workon upgrade-platform
(upgrade-platform) tom@tom-linuxer:~$ pwd
/home/tom

cdvirtualenv:  进入虚拟环境目录
(upgrade-platform) tom@tom-linuxer:~$ cdvirtualenv 
(upgrade-platform) tom@tom-linuxer:~/work/virtualenvs/upgrade-platform$ 

deactivate:  停止虚拟环境
(upgrade-platform) tom@tom-linuxer:~/work/virtualenvs/upgrade-platform$ deactivate 
tom@tom-linuxer:~/work/virtualenvs/upgrade-platform$ 

rmvirtualenv xxx:删除xx环境

安装错误

tom@tom-linuxer:~$ pip install virutalenv virtualenvwrapper
Collecting virutalenv
  ERROR: Could not find a version that satisfies the requirement virutalenv (from versions: none)
ERROR: No matching distribution found for virutalenv

说明:基本上是网络错误。

参考

pyenv

发布了112 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chengbeng1745/article/details/103105973