112 lines
3.0 KiB
Python
112 lines
3.0 KiB
Python
|
#!/usr/bin/env python3
|
|||
|
# -*- coding: utf-8 -*-
|
|||
|
"""
|
|||
|
最小化SocketIO测试脚本
|
|||
|
用于诊断PyInstaller打包后的SocketIO初始化问题
|
|||
|
"""
|
|||
|
|
|||
|
import sys
|
|||
|
import os
|
|||
|
import traceback
|
|||
|
|
|||
|
print(f"Python版本: {sys.version}")
|
|||
|
print(f"工作目录: {os.getcwd()}")
|
|||
|
print(f"Python路径: {sys.path[:3]}...") # 只显示前3个路径
|
|||
|
print("="*50)
|
|||
|
|
|||
|
# 测试基础模块导入
|
|||
|
try:
|
|||
|
import threading
|
|||
|
print("✓ threading模块可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ threading模块不可用: {e}")
|
|||
|
|
|||
|
try:
|
|||
|
import eventlet
|
|||
|
print("✓ eventlet模块可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ eventlet模块不可用: {e}")
|
|||
|
|
|||
|
try:
|
|||
|
import gevent
|
|||
|
print("✓ gevent模块可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ gevent模块不可用: {e}")
|
|||
|
|
|||
|
print("="*50)
|
|||
|
|
|||
|
# 测试Flask导入
|
|||
|
try:
|
|||
|
from flask import Flask
|
|||
|
print("✓ Flask导入成功")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ Flask导入失败: {e}")
|
|||
|
sys.exit(1)
|
|||
|
|
|||
|
# 测试SocketIO导入
|
|||
|
try:
|
|||
|
from flask_socketio import SocketIO
|
|||
|
print("✓ SocketIO导入成功")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ SocketIO导入失败: {e}")
|
|||
|
sys.exit(1)
|
|||
|
|
|||
|
print("="*50)
|
|||
|
|
|||
|
# 测试engineio异步驱动
|
|||
|
try:
|
|||
|
import engineio.async_drivers.threading
|
|||
|
print("✓ engineio.async_drivers.threading可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ engineio.async_drivers.threading不可用: {e}")
|
|||
|
|
|||
|
try:
|
|||
|
import engineio.async_drivers.eventlet
|
|||
|
print("✓ engineio.async_drivers.eventlet可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ engineio.async_drivers.eventlet不可用: {e}")
|
|||
|
|
|||
|
try:
|
|||
|
import engineio.async_drivers.gevent
|
|||
|
print("✓ engineio.async_drivers.gevent可用")
|
|||
|
except ImportError as e:
|
|||
|
print(f"✗ engineio.async_drivers.gevent不可用: {e}")
|
|||
|
|
|||
|
print("="*50)
|
|||
|
|
|||
|
# 创建Flask应用
|
|||
|
app = Flask(__name__)
|
|||
|
app.config['SECRET_KEY'] = 'test-key'
|
|||
|
|
|||
|
print("测试SocketIO初始化...")
|
|||
|
|
|||
|
# 测试1: 不指定async_mode
|
|||
|
print("\n1. 测试自动检测async_mode:")
|
|||
|
try:
|
|||
|
socketio_auto = SocketIO(app, cors_allowed_origins='*')
|
|||
|
print(f"✓ 自动检测成功,使用模式: {socketio_auto.async_mode}")
|
|||
|
except Exception as e:
|
|||
|
print(f"✗ 自动检测失败: {e}")
|
|||
|
print(f"错误详情: {traceback.format_exc()}")
|
|||
|
|
|||
|
# 测试2: 明确指定threading模式
|
|||
|
print("\n2. 测试threading模式:")
|
|||
|
try:
|
|||
|
socketio_threading = SocketIO(app, cors_allowed_origins='*', async_mode='threading')
|
|||
|
print(f"✓ threading模式成功,使用模式: {socketio_threading.async_mode}")
|
|||
|
except Exception as e:
|
|||
|
print(f"✗ threading模式失败: {e}")
|
|||
|
print(f"错误详情: {traceback.format_exc()}")
|
|||
|
|
|||
|
# 测试3: 明确指定eventlet模式
|
|||
|
print("\n3. 测试eventlet模式:")
|
|||
|
try:
|
|||
|
socketio_eventlet = SocketIO(app, cors_allowed_origins='*', async_mode='eventlet')
|
|||
|
print(f"✓ eventlet模式成功,使用模式: {socketio_eventlet.async_mode}")
|
|||
|
except Exception as e:
|
|||
|
print(f"✗ eventlet模式失败: {e}")
|
|||
|
print(f"错误详情: {traceback.format_exc()}")
|
|||
|
|
|||
|
print("\n" + "="*50)
|
|||
|
print("测试完成!")
|
|||
|
input("按回车键退出...")
|