跳转至

Python 包管理

Python 的一大优势在于它的第三方库真的很多,使得很多事情很容易完成。例如说,你想要做一个填表的网站,完成后将用户的信息填入 Word 文档内发还给客户,这一过程如果自己编写代码会是一件很复杂的事情,而 Python 就有完善的第三方库帮助我们完成这件事情。

import

无论是 Python 自带的库还是第三方库,引入方法均如下:

Python
1
2
3
4
5
6
7
8
import myModule;    # 引入整个库
# 后续调用使用 myModule.funcName()
import myModule as mM;  # 起别名

from myModule import some;  # 引入部分
# 后续调用使用 some()
from myModule import this, that;    # 同时引入多个部分
from myModule import *;         # 引入全部,不推荐

pip

Python 自带了包管理器 pip, 安装第三方库十分简单。一般情况下,只用输入 pip install <包名> 就可以安装第三方包了(也可能需要使用 pip3)。

标准库

Python内置了很多标准库,这些库提供了各种各样的功能,可以帮助我们快速开发Python应用程序。下面是Python中一些常用的标准库,仅做列举:

  • os:提供了与操作系统交互的功能,如 文件操作、目录操作、进程管理等。
  • sys:提供了一些与Python解释器和Python运行环境相关的功能,如 命令行参数、标准输入输出、环境变量 等。
  • datetime:提供了处理日期和时间的功能,如日期的计算、格式化、解析等。
  • re:提供了正则表达式的支持,可以用来进行文本匹配和替换等操作。
  • math:提供了数学运算的函数库,如三角函数、指数函数、常量等。
  • random:提供了生成随机数的函数,可以用来进行模拟和随机抽样等操作。
  • json:提供了 JSON格式的编码和解码 功能,可以进行数据的序列化和反序列化。
  • sqlite3:提供了SQLite数据库的支持,可以进行 数据库的连接、查询、修改 等操作。

这些标准库都是Python自带的,无需额外安装,可以直接在Python中使用。在编写Python应用程序时,使用这些标准库可以大大提高我们的开发效率,避免重复造轮子。

常用第三方库

当今,Python 生态系统中有数以千计的第三方库,其中许多库都非常有用。以下是一些常用的 Python 第三方库:

  • NumPy:用于数学计算和科学计算的库,效率较高。
  • Pandas:提供了数据结构和数据分析工具,特别是在数据处理方面非常有用。
  • Matplotlib:用于绘制静态、动态和交互式图形的绘图库。
  • TensorFlow:用于机器学习和深度学习的库。
  • PyTorch:另一个流行的深度学习框架。
  • Django:用于编写 Web 应用程序的全功能框架,提供了许多开箱即用的功能和工具。
  • Requests:用于发送 HTTP 请求和处理响应的库,非常适合编写 Web 应用程序和爬虫。

这仅仅是 Python 生态系统中的一小部分。还有更多的库等待大家的探寻。

如何学习使用库
  1. 阅读文档 ("Python official documentation is all you need")
  2. 尝试样例、经典项目 (网上有很多新手入门案例)
  3. 根据 IDE / 编辑器的提示阅读接口文档
  4. 问 ChatGPT (Strongly Recommended)

环境配置

Conda

我们刚刚介绍了 Python 有很多现成的包,这些包被广泛应用。事实上,任何大型的 Python 项目或多或少都引入了第三方的包。然而,这些包的不同版本之间有可能是不互相兼容的。如果我们同时开发 A 项目和 B 项目,A 项目要求 x 包的 4.0 版本, B 项目却只能在 x 包的 5.0 版本下运行,这就会给我们带来极大的困扰。

Conda 的一大作用就是 创建独立的虚拟环境,每个环境都可以拥有自己的 Python 解释器、库和依赖项。这使得在不同的项目或应用程序之间隔离依赖项变得容易。我们可以 为每一个项目创建专属的虚拟环境,在切换项目的同时也切换虚拟环境,避免依赖上的冲突。

Conda 的安装相对简单,请大家自行去下载系统对应版本的 miniconda 并安装(请安装较新版本的 Conda):

  • conda create -n <env_name> python=3.9 创建一个 Python 3.9 版本的新虚拟环境
  • conda activate <env_name> 激活这一虚拟环境 激活后,你可以正常使用 pip 安装包,所安装的包会且只会作用于当前的虚拟环境
  • pip freeze > requirements.txt 将当前环境中 pip 安装的包的列表存储到 requirements.txt 当中
  • pip install -r requirements.txt 按照 requirements.txt 中的要求在当前环境中安装对应的包
  • conda deactivate 退出当前的虚拟环境

当一个项目需要多人协作的时候,流程往往是这样的:

  1. 一个人:创建新的虚拟环境并激活 -> 安装必要的包 -> 导出到 requirements.txt 中,一并上传至项目仓库
  2. 其他人:把仓库拉下来 -> 创建新的虚拟环境并激活 -> 根据 requirements.txt 安装需要的包

IPython, IDE

IPython(Interactive Python)是一个增强版的 Python 解释器,它提供了许多增强的交互式功能,如代码自动补全、历史记录、对象内省、交互式数据可视化等。大家可以参考清华大学赵晨阳 2022 年的暑培讲义去了解更多。

IDE 往往也能实现 IPython 的大部分功能,让你的开发效率更上一层楼。大家常用的开发环境大概是VSCode + 插件,这里可以考虑 PyCharm, 是一款很不错的 IDE,不过我觉得在大多数开发中vscode is all you need 🐶。

Jupyter Notebook

运行方式

Jupyter Notebook(前身为 IPython Notebook)是一个 基于 Web 的交互式计算环境,可以在其中创建、编辑和共享文档,包括代码、文本、图形、可视化和数学公式等。大家可以将它看作一个升级版本的 IPython notebook。它主要有以下优势:

  • Web 界面:Jupyter Notebook 提供了一个基于 Web 的用户界面,可以在其中创建、编辑和运行代码、文本和图形等。这使得 Jupyter Notebook 可以在多种设备和平台上运行,包括台式机、笔记本电脑和移动设备。
  • 交互性:Jupyter Notebook 支持交互式计算,可以快速测试和调试代码,并在文档中直接显示结果。这使得数据分析和可视化变得更加容易。
  • 可视化支持:Jupyter Notebook 支持多种可视化库,包括 MatplotlibBokehPlotly 等。这使得用户可以轻松地创建交互式图表和可视化结果。
  • 共享性:Jupyter Notebook 支持导出为多种格式,包括 HTMLPDFMarkdown 等。这使得用户可以轻松地共享文档和分析结果。

总的来说,Jupyter Notebook 是一个非常强大、灵活和易于使用的交互式计算环境,适用于数据分析、机器学习、科学计算、文档编写和教学等多个场景。

运行原理

在Jupyter Notebook中,我们编写的代码实际上是在一个后端内核(kernel)中执行的。这个内核负责接收Notebook的前端(即你在网页上看到的界面)发送的代码请求,然后执行代码并将结果返回给前端。

以下是Jupyter Notebook运行的基本原理:

  1. 前端和后端分离:Jupyter Notebook是一个基于浏览器的应用程序,前端是在浏览器中运行的页面,用户可以在这里编写代码、查看结果、添加文本注释等。后端内核则是实际执行代码的地方。
  2. 内核(Kernel):Jupyter Notebook支持多种编程语言(如Python、R、Julia等),每种语言都有对应的内核。内核是一个独立的进程,它运行在你的计算机上(或远程服务器上),负责执行用户输入的代码。对于Python来说,常用的内核是IPython内核。
  3. 消息通信:Jupyter Notebook前端和后端内核之间通过消息传递系统进行通信。这种通信是通过ZeroMQ(ZMQ)协议进行的。当用户在Notebook中执行一段代码时,前端将代码以消息的形式发送给内核,内核执行代码后,将结果以消息形式返回前端,前端再将结果显示给用户。
  4. 本地或远程执行:内核可以在本地计算机上运行,也可以配置成在远程服务器上运行。这使得Jupyter Notebook可以用于本地开发,也可以用于远程计算资源的访问。
  5. 状态保持:内核是有状态的,即在一个Notebook会话中执行的所有代码都共享相同的内存空间。比如,之前定义的变量可以在后续的代码单元中继续使用,直到内核被重启。
Note

Jupyter Notebook中编写的代码是运行在与前端分离的后端内核中,这个内核可以是本地的,也可以是远程的。