@Author: Basil Guo
@Date: Jun. 9, 2021
@Description: pip包管理器和虚拟环境


这一部分可以在学完基础之后再看,先看了没什么太大的帮助。可以向后学习了,不影响的,等需要的时候,我会再引用这里的。

1. pip包管理器

Python的标准库builtins,其中包含了Python内置的函数和模块,可以使用dir(__builtins__)进行查看。下面是在交互式命令行下的输出结果。
image.png
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 ... 依次(在线)安装package1package2等扩展模块
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 的环境。用于创建和管理虚拟环境的模块称为 venvvenv 通常会安装你可用的最新版本的 Python。如果您的系统上有多个版本的 Python,您可以通过运行 python3 或您想要的任何版本来选择特定的Python版本。

要创建虚拟环境,请确定要放置它的目录,并将 venv 模块作为脚本运行目录路径:

  1. $ python3 -m venv tutorial-env

如果 tutorial-env 目录不存在,它将为你创建一个,并在其中创建包含Python解释器,标准库和各种支持文件的副本的目录。虚拟环境的常用目录位置是 .venv。 这个名称通常会令该目录在你的终端中保持隐藏,从而避免需要对所在目录进行额外解释的一般名称。 它还能防止与某些工具所支持的 .env 环境变量定义文件发生冲突。

创建虚拟环境后,您可以激活它。

  1. 在Windows上,运行:

    $ tutorial-env\Scripts\activate.bat
    
  2. 在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']
>>>

3. 参考引用

  1. pip使用手册
  2. 安装Python模块
  3. 虚拟环境和包