python多版本管理

https://github.com/pyenv/pyenv

https://github.com/pyenv/pyenv-virtualenv

https://github.com/pyenv-win/pyenv-win

安装

安装相关依赖

1
2
3
sudo apt-get update
sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
sudo apt-get install git

安装pyenv

安装pyenv到$HOME下的.pyenv目录。

从仓库获取pyenv,放置到.pyenv目录。

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

配置.bashrc文件。

1
2
3
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init --path)"\nfi' >> ~/.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
2
# pyenv install -l
pyenv install --list

我选择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
2
3
cd ~
mkdir codever381
cd codever381

创建.python-version文件,在其中写上当前virtualenv的名字(可通过pyenv versions命令查看所有可用virtualenv)。

1
2
pyenv versions
echo 'ver381' >> .python-version

现在,你的命令行开头应该会显示(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:安装某个版本的Python
  • pyenv local:为某个应用设置特定的Python版本
  • pyenv prefix:显示对应Python版本的路径前缀
  • pyenv rehash:再哈希pyenv shims(不清楚有什么用,欢迎评论补充)
  • pyenv root:显示pyenv根目录
  • pyenv shell:为某个shell设置特定的Python版本(与pyenv local类似)
  • pyenv shims:列出当前存在的shimspyenv的工作原理就是在一个叫shims的目录下创建Python解释器的“假版本”,寻找Python应用时先从该目录查找)
  • pyenv uninstall:卸载某个版本Python
  • pyenv --version:显示pyenv版本
  • pyenv version:显示当前Python版本,等价于pyenv version-name+pyenv version-file
  • pyenv versions查看当前已安装的Python版本
  • pyenv version-file/version-name/version-origin:当前Python版本对应的文件/名字/位置
  • pyenv whence:列出已安装的一个范围内的Python版本,比如列出本地安装的Python2Python3的版本,可以使用pyenv whence 2to3
  • pyenv which:列出可执行文件的绝对路径,比如pyenv which python可以列出python命令的绝对路径
  • pyenv virtualenvs 查看所有存在的virtualenv
  • pyenv activate 手动激活指定virtualenv
  • pyenv deactivate 手动反激活当前已被激活的virtualenv

加速

  1. pyenv淘宝镜像源加速:https://npm.taobao.org/mirrors/python/
  2. 下载需要的版本放到~/.pyenv/cache文件夹下面
  3. 然后执行 pyenv install 版本号 安装对应的python版本
  4. 傻瓜式脚本如下,其中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
2
3
4
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

windows下,直接在user目录中创建一个pip目录,再新建文件pip.ini。(例如:C:\Users\WQP\pip\pip.ini)内容同上。