Environment Test

Python

import sys
import os
import platform

def print_python_details():
    print("="*60)
    print("📌 Python 环境与系统详细信息")
    print("="*60)

    print("\n=== 🔹 基本版本信息 ===")
    print(f"Python 完整版本: {sys.version}")
    print(f"Python 版本号: {sys.version_info}")
    print(f"Python 安装位置: {sys.executable}")

    print("\n=== 🔹 系统核心信息 ===")
    print(f"操作系统: {platform.system()} {platform.release()} ({platform.version()})")
    print(f"系统架构: {platform.machine()}")
    print(f"处理器: {platform.processor() or '未知'}")

    print("\n=== 🔹 Python路径与环境 ===")
    print("Python模块搜索路径(前10条):")
    for i, path in enumerate(sys.path[:10]):
        print(f"  [{i+1}] {path}")
    if len(sys.path) > 10:
        print(f"  ... 还有 {len(sys.path)-10} 条路径未显示")

    print(f"\n标准库安装目录: {os.path.dirname(os.__file__)}")
    print("\n" + "="*60)

if __name__ == "__main__":
    print_python_details()
============================================================
📌 Python 环境与系统详细信息
============================================================

=== 🔹 基本版本信息 ===
Python 完整版本: 3.13.11 | packaged by Anaconda, Inc. | (main, Dec 10 2025, 21:21:58) [MSC v.1929 64 bit (AMD64)]
Python 版本号: sys.version_info(major=3, minor=13, micro=11, releaselevel='final', serial=0)
Python 安装位置: D:\Software\Miniconda3\python.exe

=== 🔹 系统核心信息 ===
操作系统: Windows 11 (10.0.26200)
系统架构: AMD64
处理器: Intel64 Family 6 Model 165 Stepping 2, GenuineIntel

=== 🔹 Python路径与环境 ===
Python模块搜索路径(前10条):
  [1] F:\FISH\CODE
  [2] D:\Software\Miniconda3\python313.zip
  [3] D:\Software\Miniconda3\DLLs
  [4] D:\Software\Miniconda3\Lib
  [5] D:\Software\Miniconda3
  [6] D:\Software\Miniconda3\Lib\site-packages

标准库安装目录: D:\Software\Miniconda3\Lib

============================================================

PyTorch

import torch
import torchvision
import os
import sys
import platform

def print_torch_environment_info():
    print('\n')
    print('=' * 25, '@程序员LIANG', '=' * 25)
    
    print(f'PyTorch版本: {torch.__version__}')
    print(f'TorchVision版本: {torchvision.__version__}')
    
    print(f'\nPyTorch安装路径: {os.path.dirname(torch.__file__)}')
    print(f'TorchVision安装路径: {os.path.dirname(torchvision.__file__)}')
    
    print(f'\nPython版本: {sys.version.split()[0]}')
    print(f'Python路径: {sys.executable}')
    
    if torch.cuda.is_available():
        print(f'\n=== GPU (CUDA) 信息 ===')
        print(f'GPU是否可用: {torch.cuda.is_available()}')
        print(f'GPU型号: {torch.cuda.get_device_name(0)}')
        print(f'CUDA版本: {torch.version.cuda}')
        print(f'cuDNN版本: {torch.backends.cudnn.version()}')
        print(f'当前GPU的CUDA算力: {torch.cuda.get_device_capability(0)}')
        print(f'当前GPU总显存: {torch.cuda.get_device_properties(0).total_memory / (1024**3):.2f} GB')
        print(f'当前GPU已用显存: {torch.cuda.memory_allocated(0) / (1024**3):.2f} GB')
        print(f'当前GPU显存使用率: {(torch.cuda.memory_allocated(0) / torch.cuda.get_device_properties(0).total_memory) * 100:.2f} %')
    else:
        print(f'\n=== GPU (CUDA) 信息 ===')
        print(f'GPU是否可用: {torch.cuda.is_available()} (当前为CPU版本)')
        print(f'CUDA版本: 未安装/不可用')
        print(f'cuDNN版本: 未安装/不可用')
        print(f'\n=== CPU 信息 ===')
        print(f'CPU型号: {platform.processor() or "未知"}')
        print(f'CPU核心数: 物理核心={os.cpu_count()}, 逻辑核心={os.cpu_count()}')  # Windows/Linux通用
    
    print('=' * 25, '@程序员LIANG', '=' * 25)
    print('\n')

if __name__ == "__main__":
    print_torch_environment_info()
========================= @程序员LIANG =========================
PyTorch版本: 2.10.0+cu130
TorchVision版本: 0.25.0+cu130

PyTorch安装路径: D:\Software\Miniconda3\envs\torch210-cu130-cp314\Lib\site-packages\torch
TorchVision安装路径: D:\Software\Miniconda3\envs\torch210-cu130-cp314\Lib\site-packages\torchvision

Python版本: 3.14.2
Python路径: D:\Software\Miniconda3\envs\torch210-cu130-cp314\python.exe

=== GPU (CUDA) 信息 ===
GPU是否可用: True
GPU型号: NVIDIA GeForce GTX 1650
CUDA版本: 13.0
cuDNN版本: 91200
当前GPU的CUDA算力: (7, 5)
当前GPU总显存: 4.00 GB
当前GPU已用显存: 0.00 GB
当前GPU显存使用率: 0.00 %
========================= @程序员LIANG =========================

TensorFlow

import tensorflow as tf

print("TensorFlow版本:", tf.__version__)
print("GPU是否可用:", tf.config.list_physical_devices('GPU'))

gpus = tf.config.list_physical_devices('GPU')
if gpus:
    print("找到以下GPU设备:")
    for gpu in gpus:
        print(f"  - {gpu}")
else:
    print("未找到GPU设备")

print("CUDA是否可用:", tf.test.is_built_with_cuda())
if gpus:
    print("\nGPU详细信息:")
    for device in gpus:
        print(f"设备名称: {device.name}")
        print(f"设备类型: {device.device_type}")
TensorFlow版本: 2.10.0
GPU是否可用: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
找到以下GPU设备:
  - PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')
CUDA是否可用: True

GPU详细信息:
设备名称: /physical_device:GPU:0
设备类型: GPU

DGL

官网:https://www.dgl.ai/pages/start.html
查询:https://data.dgl.ai/wheels/repo.html or https://data.dgl.ai/wheels/cu116/repo.html

import os
import sys
import torch
import dgl

def print_sep(title):
    print("\n" + "=" * 20 + f" {title} " + "=" * 20)

print_sep("System")
print(f"Python version    : {sys.version}")
print(f"Python executable : {sys.executable}")

print_sep("PyTorch")
print(f"PyTorch version   : {torch.__version__}")
print(f"Install path      : {os.path.dirname(torch.__file__)}")
print(f"CUDA available    : {torch.cuda.is_available()}")
print(f"CUDA version      : {torch.version.cuda}")
if torch.cuda.is_available():
    print(f"GPU name          : {torch.cuda.get_device_name(0)}")

print_sep("DGL")
print(f"DGL version       : {dgl.__version__}")
print(f"Install path      : {os.path.dirname(dgl.__file__)}")

# 真正测试 DGL GPU 能否用
if torch.cuda.is_available():
    try:
        g = dgl.rand_graph(100, 500)
        g = g.to("cuda")

        x = torch.randn(100, 16, device="cuda")
        g.ndata["x"] = x

        print("DGL GPU test      : SUCCESS ✅")
    except Exception as e:
        print("DGL GPU test      : FAILED ❌")
        print(e)
else:
    print("DGL GPU test      : skipped (no CUDA)")
==================== System ====================
Python version    : 3.10.19 | packaged by Anaconda, Inc. | (main, Oct 21 2025, 16:41:31) [MSC v.1929 64 bit (AMD64)]
Python executable : D:\Software\Miniconda3\envs\DGL\python.exe

==================== PyTorch ====================
PyTorch version   : 1.13.1+cu116
Install path      : D:\Software\Miniconda3\envs\DGL\lib\site-packages\torch
CUDA available    : True
CUDA version      : 11.6
GPU name          : NVIDIA GeForce GTX 1650

==================== DGL ====================
DGL version       : 1.1.2+cu116
Install path      : D:\Software\Miniconda3\envs\DGL\lib\site-packages\dgl
DGL GPU test      : SUCCESS ✅

Dlib

import dlib

def check_dlib_cuda_support():
    """
    检查 dlib 是否支持 CUDA 加速
    """
    # 打印 dlib 版本信息
    print(f"dlib 版本: {dlib.__version__}")
    
    # 核心检测:检查 dlib 是否编译了 CUDA 支持
    if dlib.DLIB_USE_CUDA:
        print("✅ dlib 已启用 CUDA 加速支持")
        
        # 额外检查:验证 GPU 是否可用(可选)
        try:
            # 尝试创建一个简单的 GPU 张量来验证
            dlib.cuda.get_num_devices()
            print(f"🖥️  检测到 {dlib.cuda.get_num_devices()} 个可用的 CUDA 设备")
        except Exception as e:
            print("⚠️  dlib 编译时支持 CUDA,但运行时未检测到可用的 GPU/CUDA 环境")
            print(f"   错误信息: {e}")
    else:
        print("❌ dlib 未启用 CUDA 加速支持")
        print("   如需启用,请重新编译安装 dlib,并确保编译时配置了 CUDA 环境")

if __name__ == "__main__":
    check_dlib_cuda_support()
dlib 版本: 20.0.0
✅ dlib 已启用 CUDA 加速支持
🖥️  检测到 1 个可用的 CUDA 设备

TensorBoard

import torch
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("runs")
x = torch.linspace(-10, 10, 2000)  

def complex_function(x):
    term1 = 0.5 * x * torch.sin(2 * x)  
    term2 = torch.cos(x / 2)            
    term3 = 0.1 * x ** 2                
    return term1 + term2 + term3

y = complex_function(x)

peaks = []
for i in range(1, len(y)-1):
    if y[i] > y[i-1] and y[i] > y[i+1] and y[i] > 5: 
        peaks.append((x[i], y[i]))

for i, (xi, yi) in enumerate(zip(x, y)):
    writer.add_scalar('Function Values', yi.item(), global_step=i)

writer.close()

print("复杂函数数据已写入TensorBoard!")
print("请在终端运行以下命令查看结果:tensorboard --logdir=runs")

Rasterio & GDAL

from osgeo import gdal
import rasterio
import os

print("=" * 60)
print("📌 库基础信息")
print("=" * 60)
print(f"✅ GDAL 已成功导入,版本:{gdal.__version__}")
print(f"✅ Rasterio 已成功导入,版本:{rasterio.__version__}")

print(f"\n📂 GDAL 安装/导入路径:{os.path.abspath(gdal.__file__)}")
print(f"📂 Rasterio 安装/导入路径:{os.path.abspath(rasterio.__file__)}")

print(f"\n🔧 GDAL 支持的栅格驱动数量:{gdal.GetDriverCount()}")

gdal_drivers = []
for i in range(min(5, gdal.GetDriverCount())):
    driver = gdal.GetDriver(i)
    gdal_drivers.append(driver.GetDescription())
print(f"🔧 GDAL 常用驱动示例:{', '.join(gdal_drivers)}")


print(f"\n🔧 Rasterio 支持的栅格驱动数量:{len(rasterio.drivers.raster_driver_extensions())}")
rasterio_drivers = list(rasterio.drivers.raster_driver_extensions().keys())[:8]
print(f"🔧 Rasterio 常用驱动示例:{', '.join(rasterio_drivers)}")
============================================================
📌 库基础信息
============================================================
✅ GDAL 已成功导入,版本:3.11.4
✅ Rasterio 已成功导入,版本:1.4.3

📂 GDAL 安装/导入路径:D:\Software\Miniconda3\envs\ras-gdal-cp312\Lib\site-packages\osgeo\gdal.py
📂 Rasterio 安装/导入路径:D:\Software\Miniconda3\envs\ras-gdal-cp312\Lib\site-packages\rasterio\__init__.py

🔧 GDAL 支持的栅格驱动数量:203
🔧 GDAL 常用驱动示例:VRT, DERIVED, GTI, SNAP_TIFF, GTiff

🔧 Rasterio 支持的栅格驱动数量:64
🔧 Rasterio 常用驱动示例:vrt, tif, tiff, ntf, img, asc, dt0, dt1

NLTK

from nltk.book import *
import nltk

if __name__ == "__main__":
    print("\n")
    print("nltk 版本信息:", nltk.__version__)
    print("nltk 安装位置:", nltk.__file__)
    print("nltk 数据目录:", nltk.data.path)
    print("nltk 当前数据:", nltk.find('.'))
*** Introductory Examples for the NLTK Book ***
Loading text1, ..., text9 and sent1, ..., sent9
Type the name of the text or sentence to view it.
Type: 'texts()' or 'sents()' to list the materials.
text1: Moby Dick by Herman Melville 1851
text2: Sense and Sensibility by Jane Austen 1811
text3: The Book of Genesis
text4: Inaugural Address Corpus
text5: Chat Corpus
text6: Monty Python and the Holy Grail
text7: Wall Street Journal
text8: Personals Corpus
text9: The Man Who Was Thursday by G . K . Chesterton 1908


nltk 版本信息: 3.9.2
nltk 安装位置: D:\Software\Miniconda3\envs\nltk-cp312\Lib\site-packages\nltk\__init__.py
nltk 数据目录: ['C:\\Users\\XXXXX/nltk_data', 'D:\\Software\\Miniconda3\\envs\\nltk-cp312\\nltk_data', 'D:\\Software\\Miniconda3\\envs\\nltk-cp312\\share\\nltk_data', 'D:\\Software\\Miniconda3\\envs\\nltk-cp312\\lib\\nltk_data', 'C:\\Users\\XXXXX\\AppData\\Roaming\\nltk_data', 'C:\\nltk_data', 'D:\\nltk_data', 'E:\\nltk_data']
import nltk
from nltk.corpus import stopwords

sentence = "The quick brown fox jumps over the lazy dog."
tokens = nltk.word_tokenize(sentence)

stop_words = set(stopwords.words('english'))

filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
print(filtered_tokens)
['quick', 'brown', 'fox', 'jumps', 'lazy', 'dog', '.']

Graphviz

from graphviz import Digraph

dot = Digraph(name='测试Graphviz复杂版', format='png')

# 全局配置 横向LR
dot.attr(
    rankdir='LR',
    label="测试Graphviz",
    labelloc="t",
    fontname="Microsoft YaHei",
    fontsize="20",
    nodesep="0.7",
    ranksep="1.4",
    bgcolor="#f8f9fa"
)

# 全局节点默认样式
dot.attr('node', style='filled', fontname="Microsoft YaHei", fontcolor="white")

# ========== 子图1:数据输入模块 ==========
with dot.subgraph(name='cluster_input') as c:
    c.attr(label='数据输入模块', style='filled', fillcolor='#e1ecf4', fontcolor='black')
    c.node('A', '原始文件读取', shape='box', fillcolor='#2980b9')
    c.node('B', '网络接口接收', shape='ellipse', fillcolor='#3498db')
    c.node('merge_in', '数据合并', shape='diamond', fillcolor='#16a085', fontcolor='white')
    c.edge('A', 'merge_in')
    c.edge('B', 'merge_in')

# ========== 子图2:数据处理模块 ==========
with dot.subgraph(name='cluster_process') as c:
    c.attr(label='数据处理模块', style='filled', fillcolor='#fff3cd', fontcolor='black')
    c.node('C', '清洗过滤', shape='box', fillcolor='#f39c12')
    c.node('D', '特征提取', shape='box', fillcolor='#e67e22')
    c.node('judge', '数据校验?', shape='diamond', fillcolor='#d35400')
    c.edge('C', 'D')
    c.edge('D', 'judge')

# ========== 子图3:业务逻辑模块 ==========
with dot.subgraph(name='cluster_biz') as c:
    c.attr(label='业务逻辑模块', style='filled', fillcolor='#d4edda', fontcolor='black')
    c.node('E', '模型A推理', shape='component', fillcolor='#27ae60')
    c.node('F', '模型B推理', shape='component', fillcolor='#1abc9c')
    c.node('agg', '结果融合', shape='box3d', fillcolor='#138d75')
    c.edge('E', 'agg')
    c.edge('F', 'agg')

# ========== 子图4:输出与异常 ==========
with dot.subgraph(name='cluster_out') as c:
    c.attr(label='输出&异常', style='filled', fillcolor='#f8d7da', fontcolor='black')
    c.node('ok_out', '正常输出保存', shape='box', fillcolor='#2c3e50')
    c.node('err_handle', '异常处理日志', shape='note', fillcolor='#c0392b')
    c.node('end', '程序结束', shape='doublecircle', fillcolor='#8e44ad')
    c.edge('ok_out', 'end')
    c.edge('err_handle', 'end')


# 主流程连线
dot.edge('merge_in', 'C')
dot.edge('judge', 'E', label='校验通过')
dot.edge('judge', 'err_handle', label='校验失败', color='red')
dot.edge('agg', 'ok_out')

# 渲染出图,自动打开
dot.render("测试Graphviz_复杂横向", view=True)
print("复杂横向图生成完成!")

在这里插入图片描述

更多推荐