pip
pip
是一个Python
语言开发的命令行程序,用来安装、管理Python Package
。
常用命令有:
- 显示已安装
Package
列表pip list
- 安装最新版本
Package
pip install package_name
- 安装指定版本
Package
pip install package_name==3.2.0
- 安装不低于某个版本的
Package
pip install 'package_name>=3.0.0'
- 批量安装
Package
pip install -r requirements.txt
- 卸载
Package
pip uninstall package_name
更多用法请参考Python pip介绍。
PyPI
PyPI
全称为Python Package Index
,是Python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI
。PyPI
推荐使用pip包管理器来下载第三方库。
pyenv
pyenv 介绍
pyenv
是一款UNIX
下的Python版本管理工具,不支持Windows。
pyenv
可以改变全局的 Python 版本,安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理Python虚拟环境。所有的设置都是用户级别的操作,不需要sudo
权限。
pyenv
是通过修改系统环境变量PATH
来实现的。系统环境变量PATH
,大家都不陌生,里面包含了一串由冒号分隔的路径,例如/usr/local/bin:/usr/bin:/bin
。每当在系统中执行一个命令时,例如python
或pip
,操作系统就会在PATH
的所有路径中从左至右依次寻找对应的命令。因为是依次寻找,因此排在左边的路径具有更高的优先级。而pyenv
做的,就是在PATH
最前面插入一个$(pyenv root)/shims
目录。这样,pyenv
就可以通过控制shims
目录中的Python版本号,来灵活地切换至我们所需的Python版本。
pyenv 安装
脚本自动安装(推荐)
最简单的方式就是通过pyenv-install
脚本自动安装,默认安装在用户目录~/.pyenv
。
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
如果你用的zsh
,则将末尾的bash
替换成zsh
即可。
通过此方式,除了安装pyenv
以外,还包含如下插件:
pyenv-doctor
pyenv-installer
pyenv-update
pyenv-virtualenv
pyenv-which-ext
通过pyenv update
命令可升级以上全部插件。
如果不确定pyenv
的环境是否安装正常,可以通过pyenv doctor
命令对环境进行检测。
如果你要卸载pyenv
,执行rm -rf $(pyenv root)
,然后删除~/.bashrc
文件中的下列内容即可。
1 | export PATH="~/.pyenv/bin:$PATH" |
通过Git手动安装
首先,clone项目到你想安装的路径
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
定义环境变量,添加pyenv init
到shell
$ 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 -)"\nfi' >> ~/.bashrc
重启shell,使修改后的Path
生效
$ exec "$SHELL"
升级pyenv
cd $(pyenv root) && git pull
pyenv 用法
查看已安装 Python 版本
$ pyenv versions
查看可安装 Python 版本
$ pyenv install -l/--list
安装指定版本Python
$ pyenv install 3.5.2
卸载指定版本Python
$ pyenv uninstall 3.5.2
查看当前激活的Python版本及相关信息
$ pyenv version
列出包含给定命令的所有Python版本
$ pyenv whence [command]
如查看哪些版本安装了supervisor
$ pyenv whence supervisorctl
查看当前激活Python版本指定命令全路径
$ pyenv which supervisorctl
重建shims
$ pyenv rehash
每次安装|卸载Python版本或带有可执行文件的Package(如 pip、supervisor等)以后,都应该执行一次本命令
切换Python版本
$ pyenv global|local|shell [python_version]
pyenv
可以从三个维度来管理Python
环境,对应命令分别是: global
(当前系统)、local
(当前目录)、shell
(当前shell)。这三个维度的优先级从左到右依次升高,即global
的优先级最低、shell
的优先级最高。对应pyenv
的版本信息分别记录在$(pyenv root)/version
、当前目录.python-version
、当前shell session的环境变量PYENV_VERSION
。
$ pyenv local|shell --unset
可分别取消local
和shell
级别的Python环境设置。
virtualenv
virtualenv 介绍
virtualenv
是一款支持Python”虚拟”运行环境的工具,可以方便的管理Python Package版本,支持Windows。
virtualenv is a tool to create isolated Python environments.
virtualenv
通过创建独立Python开发环境,来解决依赖、版本以及间接权限问题。比如一个项目依赖Celery 3.2.5
,而当前全局开发环境为Celery 4.2.0
,版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv
可以解决这些问题。
virtualenv
创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理Python版本和管理Python库。
virtualenv 安装
pip命令安装
$ [sudo] pip install virtualenv
或者$ [sudo] pip install https://github.com/pypa/virtualenv/tarball/master
源码安装
1 | curl -O https://github.com/pypa/virtualenv/archive/16.0.0.tar.gz |
virtualenv 用法
Linux
创建虚拟环境
$ virtualenv [-p|--python /usr/bin/python3.5] env_test
激活虚拟环境
$ source env_test/bin/activate
取消激活
$ deactivate
删除虚拟环境
$ rm -rf env_test
Windows
创建虚拟环境
> virtualenv [-p|--python "c:\Python27\python.exe"] env_test
激活虚拟环境
> env_test\Scripts\activate
取消激活
> env_test\Scripts\deactivate.bat
删除虚拟环境
> rd /s /q env_test
pyenv-virtualenv
pyenv
已内置了pyenv-virtualenv
插件,无需另外安装。
创建项目环境
$ pyenv virtualenv 3.5.2 env_test
项目环境设置
$ pyenv local env_test
设置后,只要
cd
进这个目录,就会启用对应环境。
命令参考:
1 | Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name> |
virtualenvwrapper
virtualenvwrapper 介绍
virtualenvwrapper
是virtualenv
的扩展工具包,它将所有虚拟环境整合在一个目录下,并且对virtualenv
命令进行了封装,可以很方便的创建、删除、复制虚拟环境。
virtualenvwrapper
不支持Windows,可用virtualenvwrapper-win
替代,下文有介绍。
virtualenvwrapper 安装
virtualenvwrapper
依赖virtualenv
,所以需要先安装virtualenv
。
$ pip install --user virtualenvwrapper
或$ sudo pip install virtualenvwrapper
--user
安装在用户目录,默认为$HOME/.local/
,sudo
安装在/usr/local/
目录
配置工作目录和项目目录,在 ~/.zshrc
中加入如下内容:
1 | export WORKON_HOME=$HOME/.virtualenvs |
然后执行source ~/.zshrc
,即可生效。
如果使用的是 bash
,则将~/.zshrc
替换成 ~/.bashrc
。
virtualenvwrapper 用法
创建新的虚拟环境
$ mkvirtualenv [envname]
该命令会帮我们创建一个新环境,默认情况下,环境的目录是 ~/.virtualenv/enname
,创建过程中它会自动帮我们安装 pip 等必要的软件,以后我们要安装新依赖时可直接使用 pip 命令。创建完之后,自动切换到该环境下工作,可看到提示符前边多了像(envname)$
这样的字符。在这个环境下安装的依赖不会影响到其他的环境。
该命令有几个可选参数:
1 | -a project_path |
该命令还支持加入 virtualenv 的参数选项,例如指定环境的 python 版本为 3.5:
$ mkvirtualenv env_test --python=python3.5
如果出现No module named virtualenvwrapper
,可将下列内容添加到~/.zshrc
,重新执行source ~/.zshrc
1 | export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python |
创建新项目
$ mkdir $PROJECT_HOME
$ mkproject proname
该命令要求配置PROJECT_HOME
目录,它在WORKON_HOME 目录下创建一个名为 proname 的虚拟环境,同时在 PROJECT_HOME
目录下创建名为 proname 的项目目录。创建完成后会自动激活虚拟环境,并进入 proname 目录。
创建临时运行环境
$ mktmpenv
切换虚拟环境
$ workon envname
退出虚拟环境
$ deactivate
列出所有环境
$ workon
或 $ lsvirtualenv
删除环境
$ rmvirtualenv [envname]
显示环境详情
$ showvirtualenv [envname]
复制环境
$ cpvirtualenv [source] [dest]
列出当前工作环境中安装的包
$ lssitepackages
更多命令请参考Command Reference
virtualenvwrapper-win
virtualenvwrapper-win 介绍
virtualenvwrapper-win
是virtualenvwrapper
的Windows版本,功能和用法都类似。
virtualenvwrapper-win 安装
$ pip install virtualenvwrapper-win
virtualenvwrapper-win 用法
创建新的虚拟环境
> mkvirtualenv -p "c:\Python2712\python.exe" env-test
设置项目目录
> setprojectdir d:\project-test
查看已安装虚拟环境
> lsvirtualenv
删除虚拟环境
> rmvirtualenv env-test
切换虚拟环境
> workon env-test
退出虚拟环境
> deactivate
更多命令请参考Main Commands
参考资料:
pyenv 命令参考文档
virtualenv 官方文档
virtualenvwrapper 官方文档
virtualenvwrapper-win
Python安装与版本管理
使用pyenv管理多个Python版本依赖环境