|
|
1 mês atrás | |
|---|---|---|
| .. | ||
| __pycache__ | 9 meses atrás | |
| 01_import_excel_to_temp.py | 9 meses atrás | |
| 02_parse_score_data.py | 9 meses atrás | |
| 02_parse_score_data_fixed.py | 9 meses atrás | |
| 02_parse_score_data_py34_compatible.py | 9 meses atrás | |
| 02_parse_score_data_py36.py | 9 meses atrás | |
| 02_parse_score_data_py36_compatible.py | 9 meses atrás | |
| 03_link_student_data.py | 9 meses atrás | |
| 04_import_to_production.py | 9 meses atrás | |
| 05_validate_and_cleanup.py | 9 meses atrás | |
| README-Python兼容性.md | 9 meses atrás | |
| README-生产环境部署.md | 9 meses atrás | |
| README.md | 9 meses atrás | |
| create_temp_tables.sql | 9 meses atrás | |
| db_config.py | 1 mês atrás | |
| diagnose_environment.py | 9 meses atrás | |
| import_conduct_score_history.py | 9 meses atrás | |
| import_pid.txt | 9 meses atrás | |
| import_pid_new.txt | 9 meses atrás | |
| install_deps.sh | 9 meses atrás | |
| requirements-prod.txt | 9 meses atrás | |
| requirements.txt | 9 meses atrás | |
| run_parser.sh | 9 meses atrás | |
| test_dependencies.py | 9 meses atrás | |
| 操行.xls | 9 meses atrás | |
原始脚本使用了Python 3.7+的语法特性,在Python 3.6环境运行报错:
SyntaxError: invalid syntax
from __future__ import annotations - Python 3.7+特性-> None - 在__future__导入后变为强制语法| 文件名 | Python版本 | 特性支持 | 适用环境 |
|---|---|---|---|
02_parse_score_data_fixed.py |
3.7+ | 类型注解 + f-string | 开发环境 |
02_parse_score_data_py36.py |
3.6+ | 移除类型注解 | 兼容版本 |
02_parse_score_data_py36_compatible.py |
3.6+ | 移除类型注解 + .format()格式 | 中等兼容环境 |
02_parse_score_data_py34_compatible.py |
3.4+ | 无typing模块 + .format()格式 | 超老环境推荐 |
ImportError: No module named typing原因: Python版本过低(< 3.5)或未安装typing模块
解决: 使用 02_parse_score_data_py34_compatible.py
SyntaxError: invalid syntax (f-string)原因: Python版本不支持f-string(< 3.6)
解决: 使用带.format()的兼容版本
SyntaxError: invalid syntax (类型注解)原因: Python版本不支持类型注解语法 解决: 使用移除类型注解的版本
# 自动检测Python版本和可用模块,自动选择最合适的脚本版本
./run_parser.sh
# 查看运行日志
tail -f 2.log
# 对于超老环境(Python < 3.6 或无typing模块)
nohup python3 02_parse_score_data_py34_compatible.py > 2.log 2>&1 &
# 对于Python 3.6环境
nohup python3 02_parse_score_data_py36_compatible.py > 2.log 2>&1 &
# Python 3.6环境使用完全兼容版本
nohup python3 02_parse_score_data_py36_compatible.py > 2.log 2>&1 &
# 查看运行日志
tail -100f 2.log
# 查看进程状态
ps aux | grep python
# 停止进程
kill $(cat parser.pid)
# 查看日志统计
grep "解析成功" 2.log | wc -l # 成功记录数
grep "解析失败" 2.log | wc -l # 失败记录数
.format() 替代 f-string# 移除此行
from __future__ import annotations
# 函数定义从:
def connect_db(self) -> None:
# 改为:
def connect_db(self):
pathlib (Python 3.6+)dataclasses (Python 3.7+但未使用)# 检查Python版本
python3 --version
# 检查语法兼容性
python3 -m py_compile 02_parse_score_data_py36.py
如果可能,建议升级生产环境到Python 3.8+,这样可以:
ImportError: No module named typing# 原因:Python版本过低(< 3.5)
# 解决:使用无typing版本
python3 02_parse_score_data_py34_compatible.py
SyntaxError: invalid syntax (f-string相关)# 原因:Python版本不支持f-string(< 3.6)
# 解决:使用.format()版本
python3 02_parse_score_data_py36_compatible.py
# 检查依赖安装
pip3 install --user -r requirements-prod.txt
python3 test_dependencies.py
# 检查数据库配置
python3 -c "from db_config import DB_CONFIG; print('配置正确')"
# 检查Python版本
python3 --version
# 检查typing模块
python3 -c "import typing; print('typing可用')" 2>/dev/null || echo "无typing模块"
# 检查依赖
python3 -c "import pymysql, pandas, sqlalchemy; print('依赖正常')"
# 测试脚本语法
python3 -m py_compile 02_parse_score_data_py34_compatible.py && echo "语法正确"