一、什么是虚拟环境
1. 什么是Python环境
要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题:
python哪里来?这个主要归功于配置的系统环境变量PATH,当我们在命令行中运行程序时,系统会根据PATH配置的路径列表依次查寻是否有
可执行文件python(在windows中,省略了后缀.exe),当查寻到该文件时,执行该文件; 如果在所有路径列表中都查找不到,
就会报报错:'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。
test.py代码中import的模块在哪里找?
import的模块包含两类,
一类称为标准库,随着python的安装而安装;
另一类称为第三方库,使用pip工具或者自己手动安装的包。
模块的搜索路径可通过sys.path查看,主要由可执行文件python所在的位置所决定。
Python环境主要包括以下内容:
解释器 python.exe
Lib目录
标准库
site-pakages目录,默认安装第三方库所在的目录
Scripts目录,包含一些执行文件
包安装管理工具pip.exe
打包工具pyinstaller.exe(需要自己安装)
…
其他
主要包括python解释器运行时需要的相关依赖文件,文档说明等
Python环境主要由运行python解释器的位置所决定
2. 什么是虚拟环境
理解了什么是python环境,思考下为什么有虚拟环境的说法。思考以下问题:
有两个项目A和B,如果A和B都要用到某一模块,但版本不相同怎么办?
在使用pip安装包时,会发现在安装的时候会安装其它的依赖包,但当我们用pip移除一个包时,却只移除了指定的包
为了解决上面的问题,python使用了虚拟环境这个概念,你可以认为是python环境的多个副本,只是在不同的副本中安装了不同的包。
既然叫虚拟环境,总得有点不一样:
虚拟环境中一般不包含标准库;
不包含python解释器运行时所需的依赖文件;可执行文件全部放于Scripts目录等。
3. 常用工具
知道了什么是虚拟环境,就应该清楚如何去管理虚拟环境,这就离不开虚拟环境管理工具,下面列出了一些常用的工具,并在稍后的内容中
对部分工具的使用作简单的介绍。
Virtualenv
virtualenv 是非常流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,
并选择不继承基础版本的包。
venv
考虑到虚拟环境的重要性,Python 从3.3 版本开始,自带了一个虚拟环境模块 venv,关于该模块的详细介绍,可参考 PEP-405 。
它的很多操作都和 virtualenv 类似。如果你使用的是python3.3之前版本或者是python2,则不能使用该功能,
依赖需要利用virtualenv进行虚拟环境管理。
pipenv
pipenv 是Kenneth Reitz(requests的作者)大神的作品。它结合了 Pipfile,pip,和virtualenv,能够有效管理Python多个环境,各种包。
并且windows视为一等公民。
Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。
Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。
virtualenv能够很好的完成虚拟环境的搭建和python版本的管理,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题
pip能够很好的完成包的管理,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。
conda
支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,
可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。
Python Launcher for Windows
Python 从3.3版本开始,在 Windows 系统中自带了一个 py.exe启动工具。如果你是使用 Python.org 官网下载的安装包安装的 Python 3.3
(或更新版本)环境,那么可以直接在命令提示符中使用这个工具(在windows中,py.exe会安装在C:\Windows目录)。
py 可以打开默认的 python 提示符; py -2.7 和 py -3 打开对应的 Python 版本,py -0将列出系统中安装了哪些版本的python
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42118352/article/details/129281671