PyTorch、CUDA 和 Python 版本查看方法详解

在检查 PyTorch、cuda 和 Python 版本时,除了直接使用 torch.__version__sys.version,我们还可以通过其他方式实现相同的功能

方法 1:直接访问属性(原始代码)

import torch
import sys

print("PyTorch Version: {}".format(torch.__version__))
print("Python Version: {}".format(sys.version))

特点

  • 简单直接,无需额外依赖。
  • 适用于快速检查版本信息。

  • 方法 2:通过命令行工具

    如果希望在脚本外部检查版本,可以直接使用命令行工具。

    Python 版本
    python --version
    # 或
    python -V
    
    PyTorch 版本
    python -c "import torch; print(torch.__version__)"
    

    特点

  • 适用于脚本外部检查,无需编写 Python 代码。
  • 可以集成到 CI/CD 流程中。

  • 方法 3:使用 torch.version 模块

    PyTorch 提供了一个 torch.version 模块,可以获取更详细的版本信息。

    import torch
    import sys
    
    # 获取 PyTorch 版本信息
    print("PyTorch Version: {}".format(torch.version.__version__))  # 或直接使用 torch.__version__
    print("PyTorch CUDA Version: {}".format(torch.version.cuda))  # 获取 CUDA 版本
    print("PyTorch cuDNN Version: {}".format(torch.backends.cudnn.version()))  # 获取 cuDNN 版本
    
    # Python 版本
    print("Python Version: {}".format(sys.version))
    

    特点

  • 可以获取 CUDA 和 cuDNN 的版本信息,对于调试 GPU 环境非常有用。
  • torch.version 提供了更细粒度的版本控制。

  • 方法 4:使用 pkg_resources

    pkg_resourcessetuptools 提供的一个工具,可以查询已安装包的版本信息。

    import pkg_resources
    
    # 获取 PyTorch 版本
    try:
        pytorch_version = pkg_resources.get_distribution("torch").version
        print("PyTorch Version: {}".format(pytorch_version))
    except pkg_resources.DistributionNotFound:
        print("PyTorch is not installed.")
    
    # Python 版本仍通过 sys 模块
    import sys
    print("Python Version: {}".format(sys.version))
    

    特点

  • 可以查询任何已安装包的版本,而不仅仅是 PyTorch。
  • 如果包未安装,会捕获 DistributionNotFound 异常。

  • 方法 5:使用 platform 模块(补充 Python 信息)

    虽然 sys.version 已经提供了 Python 版本信息,但 platform 模块可以提供更详细的系统信息。

    import torch
    import platform
    
    print("PyTorch Version: {}".format(torch.__version__))
    print("Python Version: {}".format(platform.python_version()))
    print("Platform: {}".format(platform.platform()))
    

    特点

  • platform.platform() 提供了操作系统的详细信息。
  • 适用于需要记录系统环境的场景。

  • 方法 6:结合 subprocess 调用命令行

    如果需要在 Python 脚本中调用外部命令行工具,可以使用 subprocess 模块。

    import subprocess
    
    def get_python_version():
        result = subprocess.run(["python", "--version"], capture_output=True, text=True)
        return result.stdout.strip()
    
    def get_pytorch_version():
        result = subprocess.run(["python", "-c", "import torch; print(torch.__version__)"], capture_output=True, text=True)
        return result.stdout.strip()
    
    print("Python Version: {}".format(get_python_version()))
    print("PyTorch Version: {}".format(get_pytorch_version()))
    

    特点

  • 适用于需要从外部命令行获取信息的场景。
  • 可以灵活地调用其他命令行工具。

  • 方法 7:使用 torch.utils.collect_env

    PyTorch 提供了一个 torch.utils.collect_env 工具,可以收集详细的系统环境信息,包括 PyTorch、Python、CUDA、cuDNN 等。

    import torch
    
    env_info = torch.utils.collect_env()
    print(env_info)
    

    特点

  • 提供全面的环境信息,适合用于调试和问题报告。
  • 输出格式为字典,可以进一步处理。

  • 总结

    方法 优点 缺点
    直接访问属性 简单直接,无需额外依赖 功能有限,仅能获取基本版本信息
    PyTorch
    通过命令行工具 适用于脚本外部检查,无需编写 Python 代码 需要手动执行命令
    使用 torch.version 提供更详细的版本信息(CUDA、cuDNN) 仅适用于
    使用 pkg_resources 可以查询任何已安装包的版本 需要额外依赖 setuptools
    使用 platform 模块 提供详细的系统信息 功能与 sys 模块部分重叠
    结合 subprocess 灵活调用外部命令行工具 实现复杂,性能可能较低
    使用 torch.utils.collect_env 提供全面的环境信息,适合调试 输出格式复杂,需要进一步处理

    作者:王红臣同学

    物联沃分享整理
    物联沃-IOTWORD物联网 » PyTorch、CUDA 和 Python 版本查看方法详解

    发表回复