Files
PythonLearn/02_python进阶/2_8_虚拟环境与依赖管理/practice.py

79 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第 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. 是否保留了完整题目和验收说明。