模块和包
在Python中,模块和包是组织代码的一种方式,可以帮助你的代码保持结构清晰和易于维护。让我们用一个简单的例子来解释它们。
模块(Module)
想象一下,你正在建造一个乐高城堡。每个小乐高积木块可以被看作是一个模块。每个积木块都有特定的形状和功能,你可以用它来构建城堡的一部分。在Python中,一个模块就是一个包含Python代码的文件(以.py结尾)。这个文件可能包含函数、类、变量等。
假设你有一个名为 math_tools.py 的文件,其中包含了一些数学相关的函数。
# math_tools.py
def add(a, b):
    return a + b
def subtract(a, b):
    return a - b这个 math_tools.py 文件就是一个模块。你可以在其他Python文件中导入并使用它。
# another_file.py
import math_tools
result = math_tools.add(3, 4)
print(result)  # 输出: 7包(Package)
继续乐高的比喻,如果你有很多乐高积木块,你可能会把它们按类型或用途分组放在不同的盒子里。在Python中,一个包是一个包含模块的目录。这个目录会有一个特殊的文件 __init__.py(可以是空的),用来告诉Python这个目录应该被视为一个包。 : 假设你现在有一个名为 math_package 的目录,里面有多个模块(文件),比如 addition.py 和 subtraction.py,还有一个 __init__.py 文件。
math_package/
│
├── __init__.py
├── addition.py
└── subtraction.py
在 addition.py 中,你可能有一个加法函数,而在 subtraction.py 中有一个减法函数。你可以按照以下方式导入和使用这些模块:
# another_file.py
from math_package import addition, subtraction
result = addition.add(10, 5)
print(result)  # 输出: 15在这个例子中,math_package 就是一个包,它帮助你组织相关的模块(如 addition 和 subtraction),使得代码结构更清晰、更易于管理。
- 模块 是单个文件,包含Python代码,可以是函数、类或变量。
 - 包 是一个目录,用于组织模块,使得代码结构更好,更易于维护。
 
第三方包管理工具pip
pip 是一款 Python 自带的第三方包管理工具。它本身也是一个包,当用户安装 Python 时该包会自动安装。通过 pip 工具,可以方便地从Python Package Index及类似的网站安装、更新、删除各种包。
常用操作
以下是一个表格,总结了 pip(Python包管理工具)的一些基本用法:
| 命令 | 描述 | 
|---|---|
pip install package_name | 
安装名为 package_name 的包 | 
pip uninstall package_name | 
卸载名为 package_name 的包 | 
pip list | 
列出已安装的包 | 
pip show package_name | 
显示名为 package_name 的包的详细信息 | 
pip search keyword | 
搜索与关键词相关的包(注:某些pip版本可能不支持此功能) | 
pip install package_name --upgrade | 
升级名为 package_name 的包 | 
pip install -r requirements.txt | 
根据 requirements.txt 文件安装多个依赖包 | 
pip freeze | 
生成当前环境中已安装包的列表(常用于创建 requirements.txt 文件) | 
pip freeze > requirements.txt | 
将已安装包的列表输出到 requirements.txt 文件中 | 
pip install package_name==version_number | 
安装特定版本的包 | 
pip源的选择
有些情况下,比如网络不给力,连接超时、防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源。使用方法:
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow需要注意的是,除了最后的pillow用你所期望的库名替代外,前面的参数都是固定写法,包括参数顺序。
如果不想每次用 pip 都加上-i https://pypi.tuna.tsinghua.edu.cn/simple,那么可以把国内源设为默认,做法是:
# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/