anaconda Qt 与系统 Qt

Ale*_*han 7 path python dynamic-linking qt shared-library

蟒蛇蟒蛇框架包括它自己的Qt的共享库,其他中。由于框架的性质,它必须首先出现在PATH环境变量中,因此它的 Python 二进制文件优先于系统的二进制文件。

当人们想将系统的 Qt 共享库用于与 python 无关的项目时,这会产生冲突。编译 Qt 项目时,它将使用qmake来自 anaconda的二进制文件及其共享库。

可以qmake通过将其路径添加到PATH变量来强制使用二进制文件,但这不适用于共享库。我尝试更改,LD_LIBRARY_PATH但它一直选择 anaconda 的。

我发现的“解决方案”:

  1. LD_PRELOAD:强制使用 Qt 共享库的 .so 使用系统库,方法是将它们一一添加到 LD_PRELOAD 环境变量中。这最终变得乏味和耗时。
  2. 与 Anaconda 混淆:按照此处的建议从 anaconda 中删除与 Qt 相关的所有内容。如果你想在 python 中开发 GUI 应用程序,这在未来看起来太脏而且容易出错。
  3. Anaconda Qt > System Qt:使用anaconda Qt 而不是系统Qt。这似乎是错误的职责分配。我与 python 无关的 Qt 项目不应该与我的 anaconda 安装耦合。它们应该彼此独立。
  4. 更改作案手法:而不必预先考虑到蟒蛇路径我所有的炮弹的PATH变量,有一个容易获得的脚本,它的预规划每当我需要它,建议在这里。问题是我习惯于让我的 python 二进制文件随时可用,并且当我在不知不觉中使用系统的 python 二进制文件时很容易出错。
  5. 移动 anaconda:临时移动 anaconda 文件夹,使其在路径中找不到。这是最快的,但在我使用完系统 Qt 库后,它太依赖我的记忆来修复所有问题。

Qt 并不是 anaconda 默认包含的唯一“非 python”包,因此任何先验的“真实”解决方案都可以应用于任何其他冲突解决方案。

小智 -1

Simple 默认不激活 conda。修改 .bashrc 以仅在您希望激活 conda 时才激活它。这样你就可以将它与系统完全分离......至少这可以在 Linux 和 osx 上运行。对窗户一无所知。

  • 如果我没记错的话,这对应于我的解决方案4 (2认同)