| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/bin/bash
- # 修复 Qt 库冲突的脚本
- # 使用 install_name_tool 修改 PyQt5 库的链接路径
- echo "Qt 库冲突修复脚本"
- echo "=================="
- echo ""
- # 获取脚本所在目录
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- cd "$SCRIPT_DIR"
- # 查找 PyQt5 的安装路径
- PYQT5_PATH=""
- for site_pkg in $(python -c "import site; print(' '.join(site.getsitepackages()))" 2>/dev/null); do
- pyqt5_candidate="$site_pkg/PyQt5"
- if [ -d "$pyqt5_candidate" ]; then
- PYQT5_PATH="$pyqt5_candidate"
- break
- fi
- done
- if [ -z "$PYQT5_PATH" ]; then
- echo "❌ 未找到 PyQt5 安装路径"
- exit 1
- fi
- echo "找到 PyQt5 路径: $PYQT5_PATH"
- echo ""
- # 检查 Anaconda 的 Qt 库路径
- ANACONDA_QT_LIB="/opt/anaconda3/lib/libQt5Core.5.15.2.dylib"
- if [ ! -f "$ANACONDA_QT_LIB" ]; then
- echo "⚠️ 未找到 Anaconda 的 Qt 库,可能不需要修复"
- exit 0
- fi
- echo "检测到 Anaconda Qt 库: $ANACONDA_QT_LIB"
- echo ""
- # 查找 PyQt5 的 Qt 库
- PYQT5_QT_CORE="$PYQT5_PATH/Qt5/lib/QtCore.framework/Versions/5/QtCore"
- if [ ! -f "$PYQT5_QT_CORE" ]; then
- echo "❌ 未找到 PyQt5 的 QtCore 库"
- exit 1
- fi
- echo "找到 PyQt5 QtCore: $PYQT5_QT_CORE"
- echo ""
- # 检查是否需要修复
- echo "检查库的依赖关系..."
- if otool -L "$PYQT5_QT_CORE" | grep -q "$ANACONDA_QT_LIB"; then
- echo "⚠️ 检测到 PyQt5 链接到 Anaconda 的 Qt 库"
- echo ""
- echo "注意: 使用 install_name_tool 修改库链接可能很复杂且容易出错"
- echo "推荐方案: 使用独立的 conda 环境"
- echo ""
- echo "运行以下命令创建干净的环境:"
- echo " ./setup_clean_env.sh"
- echo ""
- read -p "是否继续尝试修复? (y/n): " -n 1 -r
- echo
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- exit 0
- fi
- else
- echo "✅ PyQt5 未直接链接到 Anaconda 的 Qt 库"
- echo "问题可能在其他地方,建议使用独立环境"
- exit 0
- fi
- echo ""
- echo "⚠️ 自动修复可能不安全,建议手动创建独立环境"
- echo "请运行: ./setup_clean_env.sh"
|