基于Python的深度学习以及常用环境测试案例
·
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("复杂横向图生成完成!")

更多推荐
所有评论(0)