Files

46 lines
1.4 KiB
Python

# 第 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()