run.sh 1.7 KB

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