# 第 2-8 课课堂练习:检查虚拟环境 # # 本文件只读取环境信息,不负责创建环境或安装依赖。 # 创建、激活和退出虚拟环境的操作请按照讲义在 PowerShell 中完成。 # 不要删除题目、预期结果和自查注释。 # 第一部分:定义 is_virtual_environment() 函数 # 1. 不接收参数,返回值标注为 bool。 # 2. 比较 sys.prefix 和 sys.base_prefix。 # 3. 两者不相等时返回 True,否则返回 False。 # 4. 不要根据路径中是否包含“.venv”来判断。 # 第二部分:定义 get_python_version() 函数 # 1. 不接收参数,返回值标注为 str。 # 2. 调用 platform.python_version() 并 return 结果。 # 3. 不要手工写死版本号,因为不同机器的版本可能不同。 # 第三部分:定义 get_environment_name() 函数 # 1. 不接收参数,返回值标注为 str。 # 2. 使用 Path(sys.prefix).name 取得当前环境目录名称。 # 3. return 得到的名称。 # 第四部分:定义 get_environment_report() 函数 # 1. 不接收参数,返回值标注为 dict[str, str]。 # 2. 调用前面三个函数。 # 3. 把布尔值转换为中文:“是”或“否”。 # 4. return 包含以下三个键的字典: # "python_version":当前 Python 版本; # "environment_name":当前环境目录名称; # "is_virtual_environment":中文“是”或“否”。 # 第五部分:定义 print_environment_report(report) 函数 # 1. 参数标注为 dict[str, str],返回值标注为 None。 # 2. 依次输出: # Python 版本:实际版本 # 当前环境:实际环境名称 # 是否为虚拟环境:是或否 # 3. 本函数只负责输出,不修改 report。 # 第六部分:定义 main() 函数 # 1. 返回值标注为 None。 # 2. 调用 get_environment_report() 并保存结果。 # 3. 调用 print_environment_report() 输出报告。 # 4. 添加程序入口判断,直接运行本文件时调用 main()。 # 第七部分:在两个环境中运行 # 1. 未激活本课虚拟环境时运行一次 practice.py,记录输出。 # 2. 按讲义创建并激活项目根目录下的 .venv。 # 3. 再次运行 practice.py。 # 4. 对比两次的环境名称和“是否为虚拟环境”。 # 5. 两台机器的路径和 Python 版本可能不同,不要求写死相同结果。 # 最终验收测试: # 1. 所有函数的参数和返回值注解正确; # 2. Python 版本来自 platform.python_version(); # 3. 环境名称来自 Path(sys.prefix).name; # 4. 虚拟环境判断来自 sys.prefix != sys.base_prefix; # 5. 报告字典包含三个指定键,值都是字符串; # 6. 输出函数不修改报告字典; # 7. 普通环境与 .venv 中的输出能够体现环境差异; # 8. 没有在代码中写死个人机器路径或 Python 版本; # 9. 没有在脚本中自动安装或卸载依赖。 # 完成后自查: # 1. 是否知道虚拟环境用于隔离项目依赖; # 2. 是否知道激活环境不会删除系统 Python; # 3. 是否优先使用 python -m pip; # 4. 是否知道 requirements.txt 用于记录项目依赖; # 5. 是否知道 .venv 不应提交到 Git; # 6. 是否能退出环境并重新激活; # 7. 是否保留了完整题目和验收说明。