```
┌─────────────────────────────────────────────────────────────────────┐
│                    Python 包的两个名字                               │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────┐    ┌─────────────────────────────────┐
│         包名 (Package Name)      │    │      模块名 (Module Name)        │
│  用于 pip/PyPI 的分发名称         │    │   用于 Python 代码中的导入        │
├─────────────────────────────────┤    ├─────────────────────────────────┤
│ yeannhua-example-package-demo   │    │ example_package                 │
│                                 │    │                                 │
│ 定义位置:                        │    │ 定义位置:                        │
│ pyproject.toml                  │    │ src/ 下的目录名                  │
│ ┌─────────────────────────────┐ │    │ ┌─────────────────────────────┐ │
│ │ [project]                   │ │    │ │ src/                        │ │
│ │ name = "yeannhua-example-   │ │    │ │ └── example_package/        │ │
│ │         package-demo"       │ │    │ │     ├── __init__.py         │ │
│ │                             │ │    │ │     ├── main.py             │ │
│ └─────────────────────────────┘ │    │ │     └── print.py            │ │
│                                 │    │ └─────────────────────────────┘ │
│ 使用场景:                        │    │ 使用场景:                        │
│ • pip install                   │    │ • import / from ... import      │
│ • pip list                      │    │ • Python 代码中                  │
│ • pip uninstall                 │    │                                 │
│ • PyPI 网站 URL                 │    │ 命名规则:                        │
│                                 │    │ • 必须是 Python 标识符           │
│ 命名规则:                        │    │ • 可以用 _ (下划线)              │
│ • 可以用 - (连字符)             │    │ • 不能用 - (连字符)              │
│ • 可以用 _ (下划线)             │    │ • 不能以数字开头                 │
│ • PyPI 全局唯一                 │    │                                 │
└─────────────────────────────────┘    └─────────────────────────────────┘
         │                                          │
         │                                          │
         ▼                                          ▼
┌─────────────────────────────────┐    ┌─────────────────────────────────┐
│      命令行使用示例               │    │      代码中使用示例               │
├─────────────────────────────────┤    ├─────────────────────────────────┤
│ $ pip install \                 │    │ # Python 代码                    │
│   yeannhua-example-package-demo │    │ from example_package import \   │
│                                 │    │      hello, add, print_dict     │
│ $ pip list | grep example       │    │                                 │
│ yeannhua-example-package-demo   │    │ import example_package          │
│ 0.2.0                           │    │ print(example_package.          │
│                                 │    │       __version__)              │
│ $ pip show yeannhua-example-... │    │                                 │
│ Name: yeannhua-example-package- │    │ # 注意：不能这样导入！            │
│       demo                      │    │ # import yeannhua-example-      │
│ Version: 0.2.0                  │    │ #          package-demo         │
│                                 │    │ # SyntaxError! (因为有 -)        │
└─────────────────────────────────┘    └─────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                         关联方式                                     │
└─────────────────────────────────────────────────────────────────────┘

pyproject.toml 中的关联:

[project]
name = "yeannhua-example-package-demo"    ← 包名 (pip 用)
version = "0.2.0"

[tool.hatch.build.targets.wheel]
packages = ["src/example_package"]        ← 指向模块位置 (import 用)


┌─────────────────────────────────────────────────────────────────────┐
│                      真实世界的例子                                   │
└─────────────────────────────────────────────────────────────────────┘

┌──────────────────────┬──────────────────────┬─────────────────────┐
│      包名 (pip)       │   模块名 (import)     │        原因          │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ requests             │ import requests      │ 一致（简单明了）      │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ Pillow               │ from PIL import      │ Pillow 是 PIL 的分支  │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ scikit-learn         │ import sklearn       │ - 不能在模块名中      │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ beautifulsoup4       │ from bs4 import      │ 版本号+简短别名       │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ opencv-python        │ import cv2           │ 历史遗留+简短易用     │
├──────────────────────┼──────────────────────┼─────────────────────┤
│ yeannhua-example-    │ import example_      │ 前缀标识+简洁导入     │
│ package-demo         │ package              │                     │
└──────────────────────┴──────────────────────┴─────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                        快速记忆                                      │
└─────────────────────────────────────────────────────────────────────┘

📦 包名 = pip 看到的名字
   • 可以有 - (yeannhua-example-package-demo)
   • pip install 用这个名字

📚 模块名 = import 使用的名字
   • 不能有 - (example_package)
   • Python 代码中用这个名字

💡 记住：Python 能 import 的，必须是合法的 Python 标识符！
```
