@Author: Basil Guo
@Date: Jun. 9, 2021
@Description: pip包管理器和虚拟环境
这一部分可以在学完基础之后再看,先看了没什么太大的帮助。可以向后学习了,不影响的,等需要的时候,我会再引用这里的。
1. pip包管理器
Python的标准库builtins,其中包含了Python内置的函数和模块,可以使用dir(__builtins__)进行查看。下面是在交互式命令行下的输出结果。
Python通常会使用到不在标准库中的包和模块,应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。这时需要使用pip来管理第三方包。
pip也是一个应用程序,从Python3.4开始就默认包含在了Python安装文件中,所以只要使用的是高版本的Python,就不用再单独安装。如果真没有安装pip,可以使用python -m ensurepip --default-pip来安装pip。
pip的功能是可以用来安装、升级和移除包。默认情况下 pip 将从 Python Package Index [https://pypi.org](https://pypi.org/) 安装软件包。 你可以在你的浏览器中查看 Python Package Index。
基本安装一个包就是python -m pip install SomePackage,其中SomePackage就是你要安装的包,不过这个命令这么长属实没必要,只是长命令明确了使用的Python是2.x还是3.x的版本。如果你只是使用一个版本,完全可以制用下面给出的使用的示例。
| pip 命令示例 | 说明 |
|---|---|
pip download SomePackage[==version] |
下载扩展库的指定版本,不安装,后面的[]是可选参数,可以不写,将安装最新版本。 |
pip freeze [> requirements.txt] |
以requirements的格式列出已安装模块 |
pip list |
列出当前已安装的所有模块 |
pip install SomePackage[==version] |
在线安装SomePackage模块的指定版本 |
pip install SomePackage.whl |
通过whl文件离线安装扩展库 |
pip install package1 package2 ... |
依次(在线)安装package1、package2等扩展模块 |
pip install -r requirements.txt |
安装requirements.txt文件中指定的扩展库 |
pip install --upgrade SomePackage |
升级SomePackage模块 |
pip uninstall SomePackage[==version] |
卸载SomePackage模块的指定版本 |
2. 虚拟环境
Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。
这意味着一个Python安装可能无法满足每个应用程序的要求。如果应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,则需求存在冲突,安装版本1.0或2.0将导致某一个应用程序无法运行。这个问题的解决方案是创建一个 virtual environment,一个目录树,其中安装有特定Python版本,以及许多其他包。
然后,不同的应用将可以使用不同的虚拟环境。 要解决先前需求相冲突的例子,应用程序 A 可以拥有自己的 安装了 1.0 版本的虚拟环境,而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。 如果应用程序 B 要求将某个库升级到 3.0 版本,也不会影响应用程序 A 的环境。用于创建和管理虚拟环境的模块称为 venv。venv 通常会安装你可用的最新版本的 Python。如果您的系统上有多个版本的 Python,您可以通过运行 python3 或您想要的任何版本来选择特定的Python版本。
要创建虚拟环境,请确定要放置它的目录,并将 venv 模块作为脚本运行目录路径:
$ python3 -m venv tutorial-env
如果 tutorial-env 目录不存在,它将为你创建一个,并在其中创建包含Python解释器,标准库和各种支持文件的副本的目录。虚拟环境的常用目录位置是 .venv。 这个名称通常会令该目录在你的终端中保持隐藏,从而避免需要对所在目录进行额外解释的一般名称。 它还能防止与某些工具所支持的 .env 环境变量定义文件发生冲突。
创建虚拟环境后,您可以激活它。
在Windows上,运行:
$ tutorial-env\Scripts\activate.bat在Unix或MacOS上,运行:
$ source tutorial-env/bin/activate这个脚本是为bash shell编写的。如果你使用 csh 或 fish shell,你应该改用 activate.csh 或 activate.fish 脚本。
激活虚拟环境将改变你所用终端的提示符,以显示你正在使用的虚拟环境,并修改环境以使 python 命令所运行的将是已安装的特定 Python 版本。 例如:
$ source ~/envs/tutorial-env/bin/activate
(tutorial-env) $ python
Python 3.5.1 (default, May 6 2016, 10:59:36)
...
>>> import sys
>>> sys.path
['', '/usr/local/lib/python35.zip', ...,
'~/envs/tutorial-env/lib/python3.5/site-packages']
>>>
