虚拟环境

安装第三方包

在之前的文章中,我们多次使用了 Python 标准库,如 randomfunctools。标准库直接被内置在 Python 中,无需安装。但标准库的功能也是有限的,有时并不足以满足我们的需求,这时可以考虑引入第三方包来解决。

Python 社区有大量的开发者和组织,贡献了数以万计的第三方包,它们包罗万象并且其中不乏高质量者,借助它们可以节省许多编码工作。Python 之所以开发效率高,一个原因就在于此。你可以在 Python Package Index 中查找所需要的包。

要安装第三方包可以使用命令行工具 pip,它将从 Python Package Index 中检索并下载安装所指定的包。

在命令行中使用如下命令:

pip3 install 包名

如安装 Python 下非常流行的 HTTP 客户端工具 requests

pip3 install requests
➜ pip3 install requests

Collecting requests
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
    100% |████████████████████████████████| 61kB 3.6kB/s
Collecting idna<2.9,>=2.5 (from requests)
  Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
  Downloading https://files.pythonhosted.org/packages/e0/da/55f51ea951e1b7c63a579c09dd7db825bb730ec1fe9c0180fc77bfb31448/urllib3-1.25.6-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 69kB/s
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/18/b0/8146a4f8dd402f60744fa380bc73ca47303cccf8b9190fd16a827281eac2/certifi-2019.9.11-py2.py3-none-any.whl (154kB)
    100% |████████████████████████████████| 163kB 116kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, certifi, chardet, requests
Successfully installed certifi-2019.9.11 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.6

安装成功后,就可以在代码中使用 import requests来导入这个包了。

通过 pip 安装包时也可以指定包的版本:

pip3 install requests=2.22.0

也可以将一个已有的包升级到最新版本:

pip3 install --upgrade requests

pip 会将第三方包安装在 Python 目录下的 lib/python3.x/site-packages 目录中。如果项目代码中使用了某个第三方包,则 Python 会到这个目录中寻找。

可以使用 pip3 show 包名命令来查看第三方包的描述信息:

pip3 show requests

Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /Users/obsession/projects/venv/lib/python3.7/site-packages
Requires: certifi, chardet, idna, urllib3
Required-by:

虚拟环境

我们之前说过,使用 pip 安装的第三方包被集中放置在系统中 Python 目录下的 lib/python3.x/site-packages目录中,这是个公共路径,其中的包可以被多个项目共享使用。

包被共享使用也会带来一个问题,如果不同的项目需要不同版本的包,这时就产生了版本冲突。比如:项目 1 中需要使用 requests=2.6.0 ,项目 2 中需要使用 requests=2.22.0,但 lib/python3.x/site-packages 目录中只能同时存在一个 requests 包的版本,这就不好办了!

同时,第三方包被集中放置也会带来一个问题,那就是如果系统中所安装的包数目非常大,对这些包的管理也会是个问题。

这就引入了虚拟环境的概念了。

当我们拥有多个项目时,可以对这些项目分别创建单独的虚拟环境,每个虚拟环境就是一个专有的 Python 运行环境。各个项目运行在自己的虚拟环境中,被完全隔离开。当我们在一个虚拟环境中安装第三方包,这个包只能在当前虚拟环境中使用,其它虚拟环境中是无法看到它的,所以也就不会再有项目间版本冲突的问题。另外每个虚拟环境中只包含当前项目所使用到的包,不会包含大量无用的包。

创建虚拟环境

Python 3 中自带有虚拟环境模块,通过它即可创建虚拟环境,无需借助其它工具。

创建虚拟环境使用命令:

python3 -m venv 虚拟环境名称

如:

python3 -m venv venv

此时将在当前目录中创建出 venv 目录,这即是虚拟环境目录,其中包含 Python 运行环境。

激活虚拟环境

要使用虚拟环境首先需要激活它,激活后当前命令行所执行的 Python 代码都将运行于该虚拟环境中。

Windows 操作系统中使用命令:

cd venv\Scripts
activate.bat

Linux 和 MacOS 中使用命令:

source venv/bin/activate

上述命令执行过后,命令行的提示符前将显示 (venv),如下:

(venv) ➜

这表示当前已处于虚拟环境中。此后在该命令行中所执行的所有 Python 代码都运行于该虚拟环境中。

退出虚拟环境

当我们不要使用虚拟环境时,可以退出当前虚拟环境。

Windows 操作系统中使用命令:

cd venv\Scripts
deactivate.bat

Linux 和 MacOS 中使用命令:

deactivate

此后命令行的提示符将恢复回原本状态。

results matching ""

    No results matching ""