Python创建虚拟环境的三种方式
Posted 王张飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python创建虚拟环境的三种方式相关的知识,希望对你有一定的参考价值。
Python创建虚拟环境的三种方式比较
Python创建虚拟环境的三种方式
首先:为什么需要虚拟环境?
在使用Python语言时,通过pip(pip3)来安装第三方包,但是由于pip的特性,系统中只能安装每个包的一个版本。但是在实际项目开发中,不同项目可能需要第三方包的不同版本,迫使我们需要根据实际需求不断进行更新或卸载相应的包,而如果我们直接使用本地的Python环境,会导致整体的开发环境相当混乱而不易管理,这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境就孕育而生。
这里,我们以Pycham创建新项目时候环境选择的环境为切入点,如下所示:
Pipenv vs Virtualenv vs Conda
1. Virtualenv
Virtualenv 是目前最流行的 Python 虚拟环境配置工具,同时支持Python2和Python3,也可以为每个虚拟环境指定Python解释器。
请预先安装pip或者pip3(安装pip的三种方式),以pip3为例,一旦正常安装pip后,可使用以下命令安装Virtualenv:
pip3 install virtualenv
在终端或命令提示符下进入(cd)选择的目录搭建一个虚拟环境
virtualenv venv
如果存在多个python解释器,可以选择指定一个Python解释器(比如python3.6),没有指定则由系统默认的解释器来搭建(变更默认的python版本可以看看 % post_link Python/使用update-alternatives管理多个版本的Python %):
virtualenv -p /usr/bin/python3.6 venv
将会在当前的目录中创建一个名venv的文件夹,这是一个独立的python运行环境,包含了Python可执行文件, 以及 pip库的一份拷贝,但第三方包需要重新安装。
要开始使用虚拟环境,其需要被激活:
source env/bin/activate
停用虚拟环境:
deactivate
virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate。这时候virtualenvwrapper
出现了,它对不同的虚拟环境使用不同的目录进行管理,并且还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。
pip3 install virtualenvwrapper
vim ~/.bashrc开始配置virtualenvwrapper:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
接着执行 source ~/.bashrc(或./zshrc)。
注意:修改.bashrc还是.zshrc取决于你使用的那种 shell。
Virtualenv相关命令总结:
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 目录中的内容。
总结:Virtualenv的优点:
- 使得不同Python应用的开发环境相互独立
- 开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中。
- 它可以防止系统中出现包管理混乱和版本的冲突
2. Pipenv
pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。
pipenv所解决的问题:
- requirements.txt 依赖管理的局限
- 多个项目依赖不同第三方库、包版本问题
- 依赖分析
pipenv的特性:
- pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
- 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
- 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
- 通过加载.env文件简化开发工作流程。
- 支持Python2 和 Python3,在各个平台的命令都是一样的。
pip是用于安装和管理软件包的包管理器。
可使用以下命令安装pipenv:
pip3 install pipenv
接下来,通过使用以下命令创建一个新环境,在指定目录下创建虚拟环境, 会使用本地默认版本的python:
pipenv install
如果要指定版本创建环境,可以使用如下命令:
pipenv --two # 使用当前系统中的Python2 创建环境
pipenv --three # 使用当前系统中的Python3 创建环境
pipenv --python 3 # 指定使用Python3创建环境
pipenv --python 3.6 # 指定使用Python3.6创建环境
pipenv --python 2.7.14 # 指定使用Python2.7.14创建环境
激活虚拟环境:
pipenv shell
删除虚拟环境:
pipenv --rm
使用exit退出当前虚拟环境。
3. Conda
Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。Anaconda也有自己的虚拟环境系统,称为conda
。conda包和环境管理器包含于Anaconda的所有版本当中。
conda是包及其依赖项和环境的管理工具。
适用语言:Python, R, Ruby, Lua, Scala, Java, javascript, C/C++, FORTRAN。
适用平台:Windows, macOS, Linux
用途:
- 快速安装、运行和升级包及其依赖项。
- 在计算机中便捷地创建、保存、加载和切换环境。
可以通过以下命令创建虚拟环境:
conda create --name environment_name python=3.6
激活虚拟环境:
conda activate
conda环境的卸载:
conda remove -n environment_name --all
参考资料
- https://zhuanlan.zhihu.com/p/163023998
- https://blog.csdn.net/zxbylx1120471286/article/details/107187517
- https://blog.csdn.net/weixin_40922744/article/details/103721870?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control
- https://blog.csdn.net/sinat_28442665/article/details/86292354
以上是关于Python创建虚拟环境的三种方式的主要内容,如果未能解决你的问题,请参考以下文章