type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
📝 模块和包
1、概念
模块(module) 就是一个
.py
文件;包(package) 是含
__init__.py
的目录,可嵌套子包;import 的本质是按 搜索路径 找到模块/包,把它变成 对象 放到当前命名空间。
2、文件结构示例
3、搜索顺序(sys.path)
- 当前脚本所在目录
- PYTHONPATH 环境变量
- 标准库目录
- site-packages(第三方包)
3.1、添加指定路径四种方法速查表
方法 | 典型语法 | 作用域 | 生命周期 | 适用场景 |
运行时修改 sys.path | import sys; sys.path.insert(0, '/abs/path') | 仅当前进程 | 进程结束即失效 | 脚本/REPL 临时调试 |
设置环境变量 PYTHONPATH | export PYTHONPATH=/abs/path:$PYTHONPATH | 当前 shell 及其子进程 | 会话级 | 开发机本地、CI 脚本 |
.pth 文件 | 在任意 site-packages 目录新建 my.pth ,内容一行:/abs/path | 全局解释器 | 永久生效 | 所有项目共享工具目录 |
包内相对导入 + pip install -e | pip install -e . (项目根含 setup.cfg/pyproject.toml ) | 虚拟环境 | 直到卸载 | 正式项目/库开发 |
3.2、逐条说明与示例
- 运行时修改
sys.path
(最灵活)
项目结构:
优点:无需重启解释器,可动态计算路径。
缺点:只对当前进程有效;写在脚本里别人看不到。
- 环境变量
PYTHONPATH
(开发常用) - Linux/macOS:
- Windows PowerShell:
优点:一次设置,当前终端及其子进程均可
import toolkit
。缺点:换终端/IDE 需重新设置;发布给他人不方便。
- .pth 文件(“一次配置,永久生效”)
- 找到当前解释器的 site-packages 目录:
- 新建
my_extra.pth
,内容只需一行:/absolute/path/to/your/dir
- 保存后任何新启动的该解释器都会自动把目录加入
sys.path
。
优点:跨项目、跨终端生效;无需改动代码。
缺点:需要写文件权限;路径为绝对路径。
- 包内相对导入 + 开发安装(推荐用于正式项目)
- 项目结构:
pyproject.toml
最少内容:- 安装到当前虚拟环境:
效果:
mypkg
被“链接”到 site-packages,任何路径下都能 import mypkg
。优点:符合打包规范,可发布。
缺点:需要简单打包描述,但现代工具(Poetry、PDM、Hatch)已极大简化。
4、导入包的方法
语法 | 效果 |
import pkg | 将包 pkg 整体加载,并用同名变量 pkg 引用 |
import pkg1, pkg2 | 一次性加载多个包,分别用同名变量 pkg1 、pkg2 引用 |
import pkg as alias | 将包 pkg 整体加载,并用自定义别名 alias 引用 |
import pkg1 as alias1, pkg2 as alias2 | 同时加载多个包,并分别用别名 alias1 、alias2 引用 |
import superpkg.subpkg | 将子包 superpkg.subpkg 整体加载,并用同名变量 superpkg.subpkg 引用 |
from superpkg import subpkg | 将子包 subpkg 直接导入当前命名空间,可直接使用 subpkg 调用 |
5、导入模块的方法
语法 | 效果 |
import pkg.mod | 把包 pkg 中的模块 mod 整体载入,使用时必须写全限定名 pkg.mod.xxx 。 |
import pkg.mod as alias | 同上,但把模块绑定到自定义别名 alias ,后续用 alias.xxx 调用,简化或避免命名冲突。 |
from pkg import mod | 只把模块对象 mod 从包 pkg 中“提取”到当前命名空间,使用时直接写 mod.xxx ,无需再写包前缀。 |
from pkg.mod import func | 把模块 pkg.mod 中的具体对象(如函数、类、变量)func 直接放入当前命名空间,使用时直接写 func() 或 func 。 |
import..
:导入最小单位是模块,而不是变量、函数名、类名from .. import ..
:导入最小单位可以是模块,也可以是变量、函数名、类名6、绝对 vs 相对导入
类型 | 写法 | 说明 |
绝对 | import mypkg.mod_a | 从 搜索路径根 开始找 |
相对 | from . import mod_a | . 当前包,.. 父包(只能在包内部用) |
7、常见坑 & 修复
坑 | 现象 | 修复 |
循环导入 | ImportError | 延迟导入(函数内 import)或重构 |
相对导入脚本 | ModuleNotFoundError | 用 -m 运行包,或改为绝对导入 |
同名文件挡住标准库 | 标准库被覆盖 | 改名或调整 sys.path |
包内直接运行 | __main__ 路径错 | 使用 python -m mypkg.mod |
8、执行入口(主函数)
8.1、基本语法
8.2、__name__
变量的作用
当 Python 文件被直接运行时,
__name__
的值为 "__main__
"当 Python 文件被导入为模块时,
__name__
的值为模块名(文件名)📝 第三方模块
1、什么是“第三方模块”
标准库:Python 官方随解释器一起发布的模块,如
os
、json
、datetime
等。第三方模块(third-party packages):由社区或个人开发、托管在 PyPI(Python Package Index)上的模块/包,需要用户额外安装才能使用,如
requests
、numpy
、pandas
、flask
、django
等。本质:放在
site-packages
目录下的目录或 .whl
/.tar.gz
安装包,包含模块代码和元数据(METADATA
、setup.py
、pyproject.toml
等)。2、常用安装方式
2.1、pip(99 % 场景)
概念:官方包管理器,自动下载 → 选 wheel → 回退源码 → 编译(如需要)。
常用命令:
2.2、wheel(二进制包,后缀 .whl)
概念:已编译好的“快递包裹”,复制即可用,跨平台需 tag 匹配。
常用命令:
2.3、源码(sdist,.tar.gz / .zip)
概念:最原始压缩包,任何平台都能编;缺 wheel 或需要改代码时用。
常用命令:
2.4、Conda(科学计算全家桶)
概念:带 C/Fortran/CUDA 依赖的大型二进制仓库,与 pip 互不干扰。
常用命令:
2.5、系统包管理器(apt/yum/brew)
概念:操作系统层面的 Python 包,版本通常滞后,但和系统库耦合。
常用命令:
2.6、私有源 / Git / 本地路径
3、注意事项
使用虚拟环境(venv、conda env、poetry、pipenv)避免包冲突。
国内用户建议配置镜像:
- 部分带 C 扩展的包(如
numpy
,lxml
)在 Windows 上推荐直接用 pip 下载预编译 wheel;若失败,可改用 conda。
- 如果同时装了 Python2/3,使用
python3 -m pip
或py -3 -m pip
明确版本。
📝 内置模块
ㅤ | ㅤ | built-in modules | ㅤ | ㅤ |
_thread | abc | aifc | argparse | array |
ast | asynchat | asyncio | asyncore | atexit |
audioop | base64 | bdb | binascii | binhex |
bisect | builtins | bz2 | calendar | cgi |
cgitb | chunk | cmath | cmd | code |
codecs | codeop | collections | colorsys | compileall |
concurrent | configparser | contextlib | contextvars | copy |
copyreg | cProfile | crypt | csv | ctypes |
curses | dataclasses | datetime | dbm | decimal |
difflib | dis | distutils | doctest | email |
encodings | ensurepip | enum | errno | faulthandler |
fcntl | filecmp | fileinput | fnmatch | fractions |
ftplib | functools | gc | getopt | getpass |
gettext | glob | grp | gzip | hashlib |
heapq | hmac | html | http | imaplib |
imghdr | imp | importlib | inspect | io |
ipaddress | itertools | json | keyword | lib2to3 |
linecache | locale | logging | lzma | mailbox |
mailcap | marshal | math | mimetypes | mmap |
modulefinder | msilib | msvcrt | multiprocessing | netrc |
nis | nntplib | ntpath | numbers | operator |
optparse | os | ossaudiodev | parser | pathlib |
pdb | pickle | pickletools | pipes | pkgutil |
platform | plistlib | poplib | posix | posixpath |
pprint | profile | pstats | pty | pwd |
py_compile | pyclbr | pydoc | queue | quopri |
random | re | readline | reprlib | resource |
rlcompleter | runpy | sched | secrets | select |
selectors | shelve | shlex | shutil | signal |
site | smtpd | smtplib | sndhdr | socket |
socketserver | spwd | sqlite3 | ssl | stat |
statistics | string | stringprep | struct | subprocess |
sunau | symbol | symtable | sys | sysconfig |
syslog | tabnanny | tarfile | telnetlib | tempfile |
termios | textwrap | this | threading | time |
timeit | tkinter | token | tokenize | trace |
traceback | tracemalloc | tty | turtle | turtledemo |
types | typing | unicodedata | unittest | urllib |
uu | uuid | venv | warnings | wave |
weakref | webbrowser | winreg | winsound | wsgiref |
xdrlib | xml | zipapp | zipfile | zipimport |
zlib | ㅤ | ㅤ | ㅤ | ㅤ |
1、个别模块只在特定平台或编译选项下存在(如
winreg
、nis
、ossaudiodev
)。
2、带前缀 _
的模块被视为实现细节,但仍可直接 import。1、语言基础 & 运行时
1.1、sys
作用:与 Python 解释器交互。
1.2、builtins
(隐式加载)
作用:存放所有内建函数/异常;可覆盖或增强。
1.3、gc
作用:手动控制垃圾回收。
2、数据类型增强
2.1、collections
作用:高性能容器数据类型。
2.2、itertools
作用:迭代器“工具箱”,惰性求值,节省内存。
3、文本处理
3.1、re
作用:正则表达式。
3.2、string
/ textwrap
/ unicodedata
作用:
string
提供常量和简单工具处理 ASCII 文本
textwrap
负责按宽度优雅地换行与缩进多行文本
unicodedata
让你查询和转换 Unicode 字符的规范化形式与属性。
4、二进制 & 编码
4.1、struct
作用:在 bytes 与 C 结构体之间转换。
4.2、base64
/ binascii
/ codecs
作用:
base64
用可打印 ASCII 编解码二进制
binascii
在二进制与十六进制(及 Base64/32/16)间快速转换并校验校验和
codecs
注册并流式处理各种文本编码的编解码与增量转换。
5、文件 & 目录 I/O
5.1、os
/ os.path
/ pathlib
作用:操作系统接口与路径。
5.2、shutil
作用:高级文件操作(复制、打包、删除树)。
5.3、glob
/ fnmatch
作用:文件通配符匹配。
6、进程 & 并发
6.1、subprocess
作用:启动子进程并与其通信。
6.2、threading
/ concurrent.futures
作用:线程与线程池。
6.3、multiprocessing
作用:多进程并行,绕过 GIL。
7、日期 & 时间
7.1、datetime
/ time
/ calendar
作用:日期时间运算、格式化、本地化。
8、数学 & 统计
8.1、math
/ cmath
作用:浮点数学(math)与复数(cmath)。
8.2、random
/ secrets
作用:伪随机与安全随机。
8.3、decimal
/ fractions
/ statistics
作用:高精度十进制、分数、统计量。
9、数据序列化 & 持久化
9.1、json
/ csv
/ configparser
作用:轻量结构化数据交换。
9.2、pickle
/ shelve
/ sqlite3
作用:二进制对象持久化、嵌入式数据库。
10、网络 & 互联网
10.1、urllib
/ http.client
/ smtplib
/ email
作用:HTTP 请求、构造邮件等。
10.2、socket
/ ssl
作用:底层网络通信与安全套接字。
11、调试 & 性能测试
11.1、logging
作用:标准日志系统,分级、可配置。
11.2、pdb
/ cProfile
/ timeit
作用:交互式调试、性能分析、小段代码计时。