ERROR: pyzmq has an invalid wheel, multiple .dist-info directories found: libsodium-1.0.17.dist-info, pyzmq-18.1.0.dist-info

ERROR: pyzmq has an invalid wheel, multiple .dist-info directories found: libsodium-1.0.17.dist-info, pyzmq-18.1.0.dist-info

我在从 GitHub 克隆项目时遇到问题。当我尝试安装 requirements.txt 文件时出现错误:

ERROR: pyzmq has an invalid wheel, multiple .dist-info directories found: libsodium-1.0.17.dist-info, pyzmq-18.1.0.dist-info

我尝试了以下选项,但没有任何效果。知道如何解决这个问题吗?

pip install --no-cache-dir -r requirements.txt

pip install --no-binary=:all: pyzmq==18.1.0

pip install wheel

我也打开了 requirements.txt 文件并删除了这个包,但是其他包没有正确安装!

编辑:基于 OP 提到的特定回购的解决方案:

我能够使用以下步骤在此 repo 中安装 requirements.txt。在 Windows 10 和 Python 3.7.

上测试
  1. here 下载 scipy v1.3.1 wheel 文件。仅支持 Python 3.5-3.7,因此请选择正确的版本 (cp35-cp37)。还要选择正确的 OS 和 32/64 位版本。
  2. 运行 pip install scipy-1.3.1-cp37-cp37m-win_amd64.whl(例如)来自 .whl 文件所在的文件夹。
  3. 在 requirements.txt 中:将 tensorflow==2.0.0b0 更改为 tensorflow==2.0.0
  4. 在 requirements.txt 中:将 torch==1.3.0 更改为 torch==1.9.0
  5. 运行 pip install -r requirements.txt

原答案:

我在安装 tensorflow==2.7.0tfx==1.3.3 时亲眼看到了 pyzmq has an invalid wheel 错误。根据 tfx repo,这些版本不兼容,导致依赖冲突。您可能有两个类似的依赖项在做同样的事情。

我用 3 种方法解决了这个问题:

  1. 指定兼容版本。就我而言,切换到 tensorflow==2.6.0 有效。
  2. 搜索并删除冗余依赖项。在我的例子中,tensorflow 已经包含在 tfx 中。删除它解决了问题(实际上还有另一个错误,但那是题外话)。
  3. 将特定版本的 pyzmq 添加到您的 requirements.txt 以强制解决。我使用了 latest version (pyzmq==22.3.0),它也解决了这个问题。

为了帮助调试问题,您可以使用 pipdeptree. See this answer 查看 pip 依赖树。