使用virtualenv来管理系统环境变量

MacOS自带老掉牙的python2.7,因为删掉会破坏系统完整性,还不能乱删。让python3和python2和平相处就是系统环境变量管理的其中一个场景。
本文记录在MacOS下安装virtualenv,管理多套系统环境变量配置的方法。

检查python和pip版本

检查Homebrew Python更新

更换Homebrew为中科大镜像源,在~/.zshrc中添加一行

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles

然后检查Python更新

➜  hexo git:(master) ✗ brew upgrade python
Updating Homebrew...
Warning: python 3.8.5 already installed

检查Python命令是否在3.8.5

➜  hexo git:(master) ✗ python -V
Python 3.8.5
➜  hexo git:(master) ✗ pip -V
pip 20.2.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

pip使用中科大镜像源

特别注意,用阿里云的源会安装失败,特别坑。报错如下

ERROR: Could not find a version that satisfies the requirement pbr (from versions: none)

更换镜像源需要添加文件: ~/.pip/pip.conf

[global]
index-url=https://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host=pypi.mirrors.ustc.edu.cn

安装与使用virtualenv

安装virtualenv

sudo pip install virtualenvwrapper

创建文件夹用于存储环境~/Envs,在~/.zshrc中添加以下内容

export WORKON_HOME=~/Envs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

source /usr/local/bin/virtualenvwrapper.sh

使用virtualenv(参考网上用法)

我们准备使用Python 3创建一个新的虚拟环境

$  mkvirtualenv  --python=python3_path myenv

其中python3_path是python3的路径,可以在其中找到

$  which python3

就我而言

$  mkvirtualenv  --python=/usr/local/bin/python3 myenv

这将在环境文件夹〜/ .virtualenvs中创建一个文件夹myenv。运行上一个命令后,新环境将处于活动状态。要停用它,只需输入:

$  deactivate

并再次激活它

$  workon myenv

在你的python3虚拟环境中,如果你输入

$  python

你激活python 3!此外,您可以使用pip调用pip3并安装python3包。

例如,您可以使用安装 Django 1.7

$  pip install Django==1.7

相关命令

## 查看当前已有环境
➜  hexo git:(master) ✗ lsvirtualenv
test
====

## 删除环境 Test    
rmvirtualenv test    

原理说明

virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source test/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

参考资料
  1. 在Mac OS X上安装Python 3并使用virtualenv和virtualenvwrapper

  2. 廖雪峰的官方网站