| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/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 "$@"
|