目前,Python 创建虚拟环境主要有三种方式,在这篇文章中,我想谈谈如何使用它们。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
为什么需要虚拟环境?
在使用 Python 语言时,通过 pip(pip3)来安装第三方包,但是由于 pip 的特性,系统中只能安装每个包的一个版本。但是在实际项目开发中,不同项目可能需要第三方包的不同版本,迫使我们需要根据实际需求不断进行更新或卸载相应的包,而如果我们直接使用本地的 Python 环境,会导致整体的开发环境相当混乱而不易管理,这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境就孕育而生。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
Virtualenv
Virtualenv 是目前最流行的 Python 虚拟环境配置工具,同时支持 Python2 和 Python3,也可以为每个虚拟环境指定 Python 解释器。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
请预先 安装和升级pip与pip31 。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
一旦正常安装 pip 后,可使用以下命令安装 Virtualenv:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pip3 install virtualenv
在终端或命令提示符下进入(cd)选择的目录搭建一个虚拟环境:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
virtualenv venv
如果存在多个 python 解释器,可以选择指定一个 Python 解释器(比如 python3.6
),没有指定则由系统默认的解释器来搭建(变更默认的 python 版本可以看看 {% post_link Python/使用 update-alternatives 管理多个版本的 Python %}):文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
virtualenv -p /usr/bin/python3 venv
将会在当前的目录中创建一个名 venv 的文件夹,这是一个独立的 python 运行环境,包含了 Python 可执行文件, 以及 pip 库的一份拷贝,但第三方包需要重新安装。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
要开始使用虚拟环境,其需要被激活:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
source venv/bin/activate
停用虚拟环境:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
deactivate
virtualenv 的一个最大的缺点就是, 每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate 。这时候 virtualenvwrapper 出现了,它对不同的虚拟环境使用不同的目录进行管理,并且还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pip3 install virtualenvwrapper
vim ~/.bashrc 开始配置 virtualenvwrapper:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
接着执行 source ~/.bashrc(或./zshrc)。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
注意:修改.bashrc 还是.zshrc 取决于你使用的那种 shell。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
workon
: 打印所有的虚拟环境;mkvirtualenv xxx
: 创建 xxx 虚拟环境,可以--python=/usr/bin/python3.6 指定 python 版本;workon xxx
: 使用 xxx 虚拟环境;deactivate
: 退出 xxx 虚拟环境;rmvirtualenv xxx
: 删除 xxx 虚拟环境。lsvirtualenv
: 列举所有的环境。cdvirtualenv
: 导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages。cdsitepackages
: 和上面的类似,但是是直接进入到 site-packages 目录中。lssitepackages
: 显示 site-packages 目录中的内容。
PipEnv
pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了 Pipfile、pip、click、requests 和 virtualenv,能够有效管理 Python 多个环境,各种第三方包及模块。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pipenv 所解决的问题:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
- requirements.txt 依赖管理的局限
- 多个项目依赖不同第三方库、包版本问题
- 依赖分析
pipenv 的特性:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
- pipenv 集成了 pip,virtualenv 两者的功能,且完善了两者的一些缺陷。
- 过去用 virtualenv 管理 requirements.txt 文件可能会有问题,Pipenv 使用 Pipfile 和 Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
- 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
- 通过加载.env 文件简化开发工作流程。
- 支持 Python2 和 Python3,在各个平台的命令都是一样的。
可使用以下命令安装 pipenv文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pip3 install pipenv
接下来,通过使用以下命令创建一个新环境,在指定目录下创建虚拟环境, 会使用本地默认版本的 python文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pipenv install
如果要指定版本创建环境,可以使用如下命令文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pipenv --two # 使用当前系统中的Python2 创建环境
pipenv --three # 使用当前系统中的Python3 创建环境
pipenv --python 3 # 指定使用Python3创建环境
pipenv --python 3.8 # 指定使用Python3.8创建环境
pipenv --python 2.7.14 # 指定使用Python2.7.14创建环境
激活虚拟环境文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pipenv shell
删除虚拟环境文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pipenv --rm
使用 exit 退出当前虚拟环境文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
Conda Environment
Anaconda 就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda 包含了 conda、Python 在内的超过 180 个科学包及其依赖项。Anaconda 也有自己的虚拟环境系统,称为 conda。文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
可以通过以下命令创建虚拟环境文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
conda create --name environment_name python=3.8
激活虚拟环境文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
conda activate
conda 环境的卸载文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
conda remove -n environment_name --all
-
pip 官网:https://pypi.org/project/pip/文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
你可以通过以下命令来判断是否已安装:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
pip --version # Python2.x 版本命令 pip3 --version # Python3.x 版本命令
https://pip.pypa.io/en/stable/installation/文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
安装 pip 和 pip3
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ sudo python get-pip.py # 运行安装脚本
注意: 用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 则执行以下命令:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
$ sudo python3 get-pip.py # 运行安装脚本。
一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。 文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
部分 Linux 发行版可直接用包管理器安装 pip,如 Debian 和 Ubuntu:文章源自浅海拾贝-https://blog.terwergreen.com/pipenv-vs-virtualenv-vs-conda-environment-zd1aq5.html
sudo apt-get install python-pip
升级 pip
python -m pip install --upgrade pip
升级 pip3
python3 -m pip install --upgrade pip
↩
- 扫码加我微信
- 验证消息请输入:来自你的博客
-
- 我的微信公众号
- 微信扫一扫与我交流吧
-
评论