介绍4种在Python中使用虚拟环境的方法。
微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩
本文将涵盖以下主题:什么是python中的虚拟环境?为什么需要虚拟环境?在Python中设置虚拟环境的4种不同方法。本文将使用以下方法来创建虚拟环境:
-
1.Pipenv
-
2.Venv
-
3.Virtualenv
-
4.Conda
1.什么是虚拟环境?
虚拟环境是一个隔离的Python环境,允许用户安装和管理不同的依赖关系。它将一个项目的依赖性与另一个项目分开,这里的依赖性是指任何模块、库或包。每个项目都有一个特定版本的依赖关系。
Python虚拟环境包含了一个特定版本的Python和一个包含相关项目的依赖性的文件夹。这就是一个简单的Python虚拟环境的例子,接下来进入为什么的部分。在这一部分,将讨论为什么需要一个虚拟环境来使用Python进行项目工作。
2.为什么需要虚拟环境?
虚拟环境以一种良好的方式规范了Python项目,通过以下例子来了解一下情况。举个例子,小明是一个初学者,他开始使用Python做项目。他做了一个名为“A”的项目,使用两个Python库来开发这个项目。第一个库是pandas 1.2版,第二个库是Flask 2.1版。一段时间后,他开始创建另一个名为“B”的项目。他需要与项目A中使用的相同的库。
他更新了库的版本,以便在项目“B”中使用这些库,现在pandas 1.2版和Flask 2.1版被更新为pandas 1.3版和Flask 2.6版。有一天,他决定向他的朋友展示他很酷的项目,当时项目“B”运行得很顺利,但项目“A”却出现了错误,原因是小明在项目“A”中使用的库的版本发生了变化,因为他在开发项目“B”时更新了库。
小明在开发项目“B”时犯了一个错误,即没有使用虚拟环境。这可能发生在任何像小明一样的初学者身上。一个库的版本在一定时间后更新。开发人员不断改变库的代码,并试图使它们没有错误和功能完善。所以这就是应该在项目中使用虚拟环境的原因。下面是一些其他的原因,使虚拟环境成为必要的工具。
-
依赖性管理:它有助于使不同的Python项目的依赖性分离和组织。
-
版本冲突:它也有助于避免版本冲突。不同的项目可能需要同一个包的不同版本,通过使用虚拟环境可以轻松地处理这些情况。
-
易于处理库:由于虚拟环境与全局的Python环境隔离。虚拟环境使得删除或创建库很容易,而不影响其他库。
3.在Python中创建虚拟环境的不同方法
现在到了本文的核心部分,在这里将学习如何创建虚拟环境并在项目中使用它。
⚡Pipenv⚡
Pipenv是一个用于为项目创建一个虚拟环境的工具,它默认会创建pip
文件。它使用一个特殊的功能,我们称之为锁功能。它创建了一个叫做Pipfile-lock
的文件。它列出了项目运行所需的所有软件包和它们的依赖性。这个文件作为环境的快照。
使用pipenv
建立一个虚拟环境。
要使用
pipenv
并为项目创建虚拟环境,首先,创建一个存储项目的文件夹,然后开始安装库。例子是在demo
文件夹中,所以将在同一位置安装库。
例1
要使用pipenv
,首先必须在系统中安装pipenv
,所以Linux和Windows用户都使用以下步骤来安装它。
-
1.Linux用户可以使用终端。
-
2.Windows用户可以使用
PowerShell
。要运行PowerShell
,请进入“开始”菜单并输入PowerShell
,需要使用pip
来安装Python中的包,所以要确保安装了pip
。可以通过在PowerShell
中运行“pip - version
”来检查。如果已经在系统中安装了pip
,则使用下面的命令来安装pipenv
。
pip install pipenv
要检查
pipenv
是否正确安装,请使用以下命令。如果你得到这样的输出,说明pipenv
已经安装在你的系统中。
# 用命令检查pip版本。
pipenv --version
pipenv - version
代码的输出:
使用
pipenv
安装库。下面以在虚拟环境中安装一个请求库为例,所以下面写的命令将在虚拟环境中安装请求库。可以使用项目需要的任何软件包。
# 使用命令`pipenv`而不是`pip`
pipenv install requests
执行上述命令后,可以看到下面的快照中的输出。
命令“pipenv install requests”的输出。
要检查哪些库存在于虚拟环境中,可以使用以下命令。
# 适用于wnidows用户
pip freeze
# 或
python -m pip freeze
要使用
pipenv
从虚拟环境中卸载库,可以在终端或PowerShell
中输入以下命令。
pipenv uninstall <any package name>
要卸载特定的软件包,用想从虚拟环境中卸载的软件包的名称替换“<any package name>
”。
有一个功能可以帮助生成一个文本文件,该文本文件将包含所有安装在虚拟环境中的库,该文本文件包含所有存在于虚拟环境中的库的名称和版本。
命令生成包含虚拟环境中所有库的列表的文本文件。
# 创建 requirment.txt
pipenv lock --requirements > requirements.txt
上面的命令将生成一个文本requirements.txt
。运行该命令后,可以在虚拟环境所在的文件夹中找到它。
也可以在这个文本文件的帮助下安装库。这些是通过刚才讨论的过程产生的文件。这些文本文件包含库的名称和它们的版本。只需将此文件保存在项目文件夹所在的确切位置即可。
命令安装使用文本文件的库。
在下面的例子中,文本文件的名称是“
requirements.txt
”。
pipenv install --requirements requirements.txt
requirements.txt
的例子如下图所示。
requirements.txt
⚡venv⚡
venv
支持创建轻量级的虚拟环境。虚拟环境是在现有的Python安装基础上创建的。正如我们之前通过使用pip
和终端Power Shell
来安装虚拟环境。这个方法对Linux和Windows用户都一样。
第一步是选择创建虚拟环境的文件夹,并打开该文件夹,可以用以下命令完成。
# 创建一个目录
mkdir <name_of_your_directory>
用项目名称或任何想要的名称替换name_of _your_directory
。
从一个目录转移到另一个目录。
# “cd”,即改变目录。
cd <name of your directory>
使用
venv
创建虚拟环境。
python -m venv my_first_env
注意:如果得到一个错误,用“python3”替换“python”,这里的3是指python版本。将“my_first_env
”替换为想给虚拟环境起的名字。
一旦创建了虚拟环境,必须激活它。
适用于Linux用户:
激活虚拟环境。
#适用于Linux用户
source <my_first_env>/bin/activate
将<my_first_env>
替换为虚拟环境的名称。
激活虚拟环境后,可以使用以下命令检查它是否正在运行,命令可能因操作系统不同而不同。
用于检查Linux中的虚拟环境的命令。
echo $VIRTUAL_ENV
一旦确认虚拟环境正在运行,就可以用pip
安装软件包,例如pip install <your_package_name>
。
命令安装虚拟环境中的软件包。
# 安装pandas软件包
pip install pandas
# 也可以指定版本。
pip install pandas=1.2
命令检查列表中哪些软件包已经安装在虚拟环境中。
# 它将输出所有的软件包名称
pip list
# 它将输出一个特定的软件包,如果在虚拟环境中存在。
pip show <package_name>
适用于Windows用户:
PowerShell
激活虚拟环境的命令。
# 适用于windows用户
<my_first_env>\Scripts\activate
输入以下命令来检查虚拟环境是否正在运行。
# 检查虚拟环境是否正在运行。
$env:VIRTUAL_ENV
命令在虚拟环境中安装软件包的
powerhell
。
#安装pandas软件包
pip install pandas
#也可以指定版本。
pip install pandas=1.2
适用于Windows和Linux用户:
使用以下命令检查哪些库存在于虚拟环境中。
# 适用于Linux和Windows用户。
pip list
# 适用于Linux和Windows用户。
pip show <package_name>
一旦完成了虚拟环境的工作,可以使用以下命令停用现有的虚拟环境。
deactivate
像pipenv
一样,venv
也可以创建文本文件并使用现有的文件在虚拟环境中安装软件包。
用命令生成文本文件。文件名是
requirements.txt
。
# 创建requirment.txt
pip freeze > requirements.txt
命令在环境中使用文本文件(在例子中是
requirements.txt
)来安装库。
pip install -r requirment.txt
以上已经完成了使用venv创建虚拟环境的所有基本命令。
⚡Virtualenv⚡
Virtualenv也用于创建一个虚拟环境,它是venv
模块下的标准库的一个子集,要使用它需要较高版本的python 3.3或以上。它创建的环境有安装目录,不与其他虚拟环境共享库。Linux和windows的命令如下。
适用于Linux用户:
通过运行命令安装
virtualenv
:
pip install virtualenv
导航到想创建虚拟环境的目录。
使用
virtualenv
创建一个虚拟环境,使用以下命令:
virtualenv <env_name>
用虚拟环境名称替换<env_name>
。
激活虚拟环境:
# 用虚拟环境名称替换`<env_name>`
source <env_name>/bin/activate
要检查虚拟环境是否在运行,请使用以下命令:
source activate
停用虚拟环境:
deactivate
适用于Windows用户:
通过运行命令安装
virtualenv
:
pip install virtualenv
导航到想创建虚拟环境的目录。
使用
virtualenv
创建一个虚拟环境,使用以下命令:
virtualenv <env_name>
用虚拟环境名称替换<env_name>
。
激活虚拟环境:
# 用虚拟环境名称替换`<env_name>`
<env_name>\Scripts\activate.bat
检查虚拟环境是否正在运行,使用以下命令:
activate
停用虚拟环境:
deactivate
如果虚拟环境已经被激活,将会在括号里看到它的名字。请看下面的例子。
(venv) C:users/username/<project_name>
见下面的例子。
abhishek
是指虚拟环境名称,demo
代表你项目的文件夹名称。
⚡Conda⚡
Conda
是一个开源的软件包和环境管理系统,它主要用于数据科学和科学计算。它可以有效地为每个项目创建一个隔离的环境,避免冲突。它同时支持Python和非python的软件包。该命令在Linux和windows下都是一样的,有些可能有所不同。
下面将解释使用conda
的命令。
1)要创建一个具有全局版本的虚拟环境。
2)使用特定的Python版本创建一个虚拟环境。下面给出了两者的命令。
--create uing python global version that is currently installed in your system.
conda create --name <env_name>
--create using specific version of python
conda create --name <env_name> python=3.2
这里的"<env_name>
"是指虚拟环境的名称。
使用
conda
命令激活虚拟环境。
#activate virtual environment using conda.
conda activate <env_name>
这里的<env_name>
是指虚拟环境的名称。
在虚拟环境中使用
conda
安装软件包。
conda install package_name
将“package_name
”替换为项目所需的软件包名称。
使用conda从虚拟环境中卸载软件包。
conda uninstall package_name
将package_name
替换为软件包名称,请看上面代码块中的一个例子以获得更好的理解。
检查虚拟环境中安装了哪些python包:
conda list
上面写的命令将显示所有安装在环境中的软件包以及它们的版本。
查看在特定环境中安装的软件包,请使用以下命令:
conda list --name env_name
用虚拟环境名称替换env_name
。
用命令在
conda
中生成packages.txt
文件,packages.txt
与requirement.txt
类似:
conda list --export > packages.txt
下面的命令将有助于安装
packages.txt
文件中定义的库。
conda install --file packages.txt
结语
以上是本文介绍的4种可以用于为项目创建虚拟环境的方法。可以根据具体情况使用任何一种方法来创建虚拟环境。
推荐书单
《Python从入门到精通(微课精编版)》
《Python从入门到精通(微课精编版)》使用通俗易懂的语言、丰富的案例,详细介绍了Python语言的编程知识和应用技巧。全书共24章,内容包括Python开发环境、变量和数据类型、表达式、程序结构、序列、字典和集合、字符串、正则表达式、函数、类、模块、异常处理和程序调试、进程和线程、文件操作、数据库操作、图形界面编程、网络编程、Web编程、网络爬虫、数据处理等,还详细介绍了多个综合实战项目。其中,第24章为扩展项目在线开发,是一章纯线上内容。全书结构完整,知识点与示例相结合,并配有案例实战,可操作性强,示例源代码大都给出详细注释,读者可轻松学习,快速上手。本书采用O2O教学模式,线下与线上协同,以纸质内容为基础,同时拓展更多超值的线上内容,读者使用手机微信扫一扫即可快速阅读,拓展知识,开阔视野,获取超额实战体验。
精彩回顾
微信搜索关注《Python学研大本营》,加入读者群
访问【IT今日热榜】,发现每日技术热点