pyd2l 是 《动手学深度学习》(Dive into Deep Learning,d2l)库的扩展包,专注于解决在新版 PyTorch 环境下的 ABI 与环境适配问题,使书中代码在各类版本组合下都能顺畅安装、运行而不报错。
原始 d2l 包在 install_requires 中锁定了较旧的依赖版本(如 numpy==1.24、matplotlib==3.5.1、pandas==1.2.4 等),这会导致:
- 在较新的 Python / PyTorch / NumPy 环境下安装时产生版本冲突
- 与用户已有的新版科学计算栈不兼容
- 因 ABI 不匹配(尤其涉及编译扩展的包)而报错
pyd2l 通过解除版本锁来最大化环境兼容性:所有依赖均不锁定版本号,pip 不会覆盖用户已安装的包,从而适配尽可能多的版本组合。
pip install pyd2l如果你已经装好 PyTorch(含对应的 CUDA / CPU 版本),pyd2l 不会覆盖它——它只确保其余依赖(numpy、pandas、matplotlib 等)就位。
pyd2l 的 API 与 d2l.torch 完全一致,可作为直接替代:
from pyd2l import torch as d2l
d2l.use_svg_display()
d2l.set_figsize((6, 4))
# 与书中示例相同的调用方式
X = d2l.tensor([1.0, 2.0, 3.0])
print(d2l.numpy(X))所有 d2l.torch 中的函数(DATA_HUB、DATA_URL、plot、Timer、Accumulator、Animator、训练循环工具等)均可在 pyd2l 中以相同方式调用。
| d2l | pyd2l | |
|---|---|---|
| 依赖版本 | 锁定旧版 | 不锁定,自适应 |
| PyTorch 适配 | 面向旧版 torch | 面向新版 torch |
| 安装冲突 | 常见 | 已缓解 |
| API | — | 完全兼容 d2l.torch |
pyd2l 在 d2l 的基础上扩展开发,保留了原库全部功能,重点改进了环境适配能力。
以下依赖均不锁定版本,由用户的运行环境决定:
torchtorchvisionnumpypandasmatplotlibrequestsPillow
MIT-0(MIT No Attribution),与 d2l 代码部分一致。