09 模块与包管理
📋 资料说明
- 来源:课程 day09
- 笔记:
尚硅谷大模型技术之Python1.0.docx第 10 章 - 每日一考:
day09_每日一考.md、day10_每日一考.md(含打包实战题) - 视频:❌ 跳过(共 17 个视频:模块导入 → 包 → 第三方库 → 打包安装)
🟢 🤖 AI 替代率:95%
为什么是这个水平:
模块导入的语法(import / from...import / import...as)是固定规则,AI 完美掌握。包管理(pip install、venv)的操作步骤也是确定性的。
唯一的 5% 人类价值在于:当遇到模块搜索路径冲突、循环导入、虚拟环境问题等实际环境问题时,需要人对 Python 的导入机制有更深的理解。
👤 人工干预率:5%
了解 __name__ == "__main__" 的作用和 __all__ 的用途即可。遇到循环导入时,能意识到是设计问题而不是语法错误。
1. 模块导入
导入整个模块
python
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.14159导入部分成员
python
from math import sqrt, pi
print(sqrt(16)) # 4.0导入所有成员(不推荐)
python
from math import * # 可能污染命名空间使用别名
python
import numpy as np
from math import sqrt as square_root2. 模块搜索顺序
python
import sys
print(sys.path)
# 1. 当前脚本所在目录
# 2. PYTHONPATH 环境变量
# 3. Python 安装目录下的 site-packagesall 的作用
python
# 在 mymodule.py 中:
__all__ = ["func1", "func2"] # 控制 from mymodule import * 导入的内容
def func1():
pass
def func2():
pass
def _private_func(): # 以下划线开头表示私有
pass3. name 属性
python
# 每个 Python 文件都有 __name__ 属性
# 直接运行时:__name__ = "__main__"
# 被导入时:__name__ = 模块名
def main():
print("程序入口")
if __name__ == "__main__":
main() # 只有直接运行时才执行4. 包(Package)
python
# 目录结构:
# mypackage/
# __init__.py # 包初始化文件(可以为空)
# module1.py
# module2.py
# subpackage/
# __init__.py
# module3.py
# 导入
import mypackage.module1
from mypackage import module2
from mypackage.subpackage import module35. 第三方库管理
bash
# pip 基本命令
pip install requests # 安装
pip install numpy==1.26.0 # 安装指定版本
pip uninstall requests # 卸载
pip list # 列出已安装的库
pip freeze > requirements.txt # 导出依赖
# 使用 requirements.txt
pip install -r requirements.txt虚拟环境
bash
# 创建虚拟环境
python -m venv myenv
# 激活(Windows)
myenv\Scripts\activate
# 激活(macOS/Linux)
source myenv/bin/activate
# 退出
deactivate6. 打包与安装
python
# 目录结构:
# mypackage/
# __init__.py
# mymodule.py
# setup.py
# setup.py
from setuptools import setup, find_packages
setup(
name="mypackage",
version="1.0.0",
packages=find_packages(),
install_requires=[
"requests>=2.25.0",
],
)
# 打包
# python setup.py sdist bdist_wheel
# 安装自己打的包
# pip install dist/mypackage-1.0.0.tar.gz练习题
练习 1:创建模块
创建一个 calculator.py 模块,包含 add、sub、mul、div 四个函数。在另一个文件中导入并使用。
练习 2:创建包
创建包结构 vehicle/car.py,Car 类有 start 和 stop 方法。打包并安装使用。
参考答案
练习 1:
python
# calculator.py
def add(a, b): return a + b
def sub(a, b): return a - b
def mul(a, b): return a * b
def div(a, b): return a / b
# main.py
from calculator import add, mul
print(add(10, 20)) # 30
print(mul(3, 5)) # 15练习 2:
python
# vehicle/car.py
class Car:
def start(self):
print("start")
def stop(self):
print("stop")
# setup.py(和 vehicle 目录同级)
from setuptools import setup
setup(name="vehicle", version="1.0", packages=["vehicle"])
# 安装使用
# pip install .
# from vehicle.car import Car
# car = Car()
# car.start()