# 第 2-8 课完整示例:虚拟环境与依赖管理 # # 本示例只读取当前 Python 解释器和环境信息,不安装、卸载任何依赖。 import platform import sys from importlib.metadata import PackageNotFoundError, version from pathlib import Path def is_virtual_environment() -> bool: """判断当前程序是否运行在普通 venv 虚拟环境中。""" # 普通环境中 sys.prefix 和 sys.base_prefix 通常相同。 # venv 激活并使用其 Python 后,这两个路径通常不同。 return sys.prefix != sys.base_prefix def get_package_version(package_name: str) -> str | None: """返回已安装依赖的版本,未安装时返回 None。""" try: return version(package_name) except PackageNotFoundError: return None def get_environment_name() -> str: """返回当前环境目录名称。""" return Path(sys.prefix).name def main() -> None: """输出解释器、虚拟环境和 pip 版本信息。""" in_virtual_environment = is_virtual_environment() environment_status = "是" if in_virtual_environment else "否" pip_version = get_package_version("pip") print(f"Python 版本:{platform.python_version()}") print(f"Python 解释器:{sys.executable}") print(f"当前环境目录:{get_environment_name()}") print(f"是否为 venv 虚拟环境:{environment_status}") print(f"pip 版本:{pip_version}") if __name__ == "__main__": main()