#!/bin/bash # 游铛铛客户端启动脚本 # 解决 macOS 上 Anaconda 和 PyQt5 的 Qt 库冲突问题 # 获取脚本所在目录 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPT_DIR" # 检查是否在 conda 环境中 if [ -n "$CONDA_DEFAULT_ENV" ] && [ "$CONDA_DEFAULT_ENV" != "base" ]; then echo "使用 conda 环境: $CONDA_DEFAULT_ENV" # 在非 base 环境中,通常不会有 Qt 冲突 exec python src/main.py "$@" fi # 在 base 环境中,尝试解决 Qt 冲突 # 查找 PyQt5 的 Qt 库路径 PYQT5_QT_LIB="" PYQT5_PLUGIN_PATH="" for site_pkg in $(python -c "import site; print(' '.join(site.getsitepackages()))" 2>/dev/null); do qt_lib_path="$site_pkg/PyQt5/Qt5/lib" qt_plugin_path="$site_pkg/PyQt5/Qt5/plugins" if [ -d "$qt_lib_path" ]; then PYQT5_QT_LIB="$qt_lib_path" PYQT5_PLUGIN_PATH="$qt_plugin_path" break fi done # 如果找到 PyQt5 的 Qt 库,设置环境变量优先使用它 if [ -n "$PYQT5_QT_LIB" ] && [ -n "$PYQT5_PLUGIN_PATH" ]; then # 注意:在较新的 macOS 版本中,DYLD_FRAMEWORK_PATH 可能被系统安全策略禁用 # 但设置它仍然值得尝试 export DYLD_FRAMEWORK_PATH="$PYQT5_QT_LIB:$DYLD_FRAMEWORK_PATH" export QT_PLUGIN_PATH="$PYQT5_PLUGIN_PATH" export QT_QPA_PLATFORM_PLUGIN_PATH="$PYQT5_PLUGIN_PATH" # 尝试阻止加载 Anaconda 的 Qt 库(可能不起作用,但值得尝试) # 在 macOS 上,这通常需要修改库的链接路径 echo "警告: 检测到 Anaconda base 环境,可能存在 Qt 库冲突" echo "建议使用独立的 conda 环境: ./setup_clean_env.sh" echo "" fi # 运行 Python 程序 exec python src/main.py "$@"