python多版本管理
python多版本管理
https://github.com/pyenv/pyenv
安装
安装相关依赖
1  | sudo apt-get update  | 
安装pyenv
安装pyenv到$HOME下的.pyenv目录。
从仓库获取pyenv,放置到.pyenv目录。
1  | git clone https://github.com/pyenv/pyenv.git ~/.pyenv  | 
配置.bashrc文件。
1  | echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc  | 
重启Shell以应用新的.bashrc文件。
1  | exec "$SHELL"  | 
安装virtualenv
从仓库获取virtualenv,以插件形式安装到.pyenv目录。
1  | git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv  | 
配置.bashrc,为自动激活virtualenv作准备。
1  | echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc  | 
重启shell以应用新的.bashrc文件。
1  | exec "$SHELL"  | 
使用
查看可以安装的Python版本。
1  | pyenv install -l  | 
我选择3.8.1版本进行安装。
1  | pyenv install 3.8.1  | 
接着,创建一个virtualenv。
创建一个使用3.8.1版本Python的virtualenv,名为ver381。
1  | pyenv virtualenv 3.8.1 ver381  | 
这条命令会在$(pyenv root)/versions目录下创建一个ver381目录。
然后,实现名为ver381的virtualenv的自动激活。
新建存放项目代码的目录,我把它放在$HOME下的codever381目录,并进入。
1  | cd ~  | 
创建.python-version文件,在其中写上当前virtualenv的名字(可通过pyenv versions命令查看所有可用virtualenv)。
1  | pyenv versions  | 
现在,你的命令行开头应该会显示(env_raaynk_hello_world)字样,表示当前virtualenv环境已激活。
创建一个Python代码文件,在其中写上打印Hello World!的代码。
1  | echo 'print("Hello World!")' >> main.py  | 
运行它。
1  | python main.py  | 
到这里,相信你对pyenv和virtualenv的使用方法已经比较清楚了。
下面,我会对pyenv和virtualenv的一些常用命令进行整理。
常用命令
查看可安装的Python版本
1  | pyenv install --list  | 
安装指定Python版本
1  | pyenv install <版本>  | 
卸载指定Python版本
1  | pyenv uninstall <版本>  | 
查看当前已安装的Python版本
1  | pyenv versions  | 
查看当前已激活的Python版本
1  | pyenv version  | 
创建指定版本的virtualenv
1  | pyenv virtualenv <版本> <名称>  | 
创建当前版本的virtualenv
1  | pyenv virtualenv <名称>  | 
删除指定virtualenv(三种方法)
法一:删除文件
直接删除$(pyenv root)/versions和$(pyenv root)/versions/{version}/envs中的指定目录
法二:使用uninstall命令
1  | pyenv uninstall <名称>  | 
法三:使用virtualenv-delete命令
1  | pyenv virtualenv-delete <名称>  | 
pyenv commands:查看所有pyenv命令pyenv exec:使用特定Python版本执行某条命令pyenv global:设置或查看全局Python版本pyenv hooks:列出给出的pyenv命令的钩子脚本pyenv init:配置shell环境pyenv install:安装某个版本的Pythonpyenv local:为某个应用设置特定的Python版本pyenv prefix:显示对应Python版本的路径前缀pyenv rehash:再哈希pyenv shims(不清楚有什么用,欢迎评论补充)pyenv root:显示pyenv根目录pyenv shell:为某个shell设置特定的Python版本(与pyenv local类似)pyenv shims:列出当前存在的shims(pyenv的工作原理就是在一个叫shims的目录下创建Python解释器的“假版本”,寻找Python应用时先从该目录查找)pyenv uninstall:卸载某个版本Pythonpyenv --version:显示pyenv版本pyenv version:显示当前Python版本,等价于pyenv version-name+pyenv version-filepyenv versions查看当前已安装的Python版本pyenv version-file/version-name/version-origin:当前Python版本对应的文件/名字/位置pyenv whence:列出已安装的一个范围内的Python版本,比如列出本地安装的Python2到Python3的版本,可以使用pyenv whence 2to3pyenv which:列出可执行文件的绝对路径,比如pyenv which python可以列出python命令的绝对路径pyenv virtualenvs查看所有存在的virtualenvpyenv activate手动激活指定virtualenvpyenv deactivate手动反激活当前已被激活的virtualenv
加速
- pyenv淘宝镜像源加速:https://npm.taobao.org/mirrors/python/
 - 下载需要的版本放到
~/.pyenv/cache文件夹下面 - 然后执行 
pyenv install 版本号安装对应的python版本 - 傻瓜式脚本如下,其中v表示要下载的版本号
 
1  | v=3.7.3;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v  | 
国内镜像
让python pip使用国内镜像
国内源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
note:新版ubuntu要求使用https源,要注意。
例如:pip3 install -i https://pypi.doubanio.com/simple/ 包名
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
临时使用
可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider,这样就会从清华这边的镜像去安装pyspider库。
永久修改,一劳永逸
Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
内容如下:
1  | [global]  | 
windows下,直接在user目录中创建一个pip目录,再新建文件pip.ini。(例如:C:\Users\WQP\pip\pip.ini)内容同上。


