【问题标题】:MAC OS ImportError: pycurl: libcurl link-time version (7.37.1) is older than compile-time version (7.43.0)MAC OS ImportError: pycurl: libcurl 链接时版本 (7.37.1) 比编译时版本 (7.43.0) 旧
【发布时间】:2016-10-15 04:32:45
【问题描述】:

当我在python界面导入curl时,它显示错误

ImportError: pycurl: libcurl link-time version (7.37.1) is older than compile-time version (7.43.0).

如何解决?我的系统是优胜美地。

【问题讨论】:

  • 你打开的是python的系统版本还是第三方版本? $PYTHONPATH 设置为什么?
  • 我使用pyenv来管理我的python,系统版本python 2.7和3rd-party python 3.5。
  • 嗯,两天后,我什么都没做就好了...我很困惑...

标签: python macos pycurl


【解决方案1】:

好的,由于此答案仍会在 Google 搜索中弹出,我将分享解决此问题的解决方法。

安装 brew 版本的 curl 并强制链接以获得最新 curl 的主要思想:

$ curl --version
curl 7.52.1 (x86_64-apple-darwin16.1.0) libcurl/7.52.1 OpenSSL/1.0.2j zlib/1.2.8 nghttp2/1.18.1

所以你以后可以使用 pycurl,链接到你的 libcurlopenssl

brew install curl
brew link curl --force
brew install openssl
export LIBRARY_PATH=/usr/local/opt/openssl/lib
export CPATH=/usr/local/opt/openssl/include
pip --no-cache-dir install pycurl
python -c "import pycurl"

希望有帮助!

【讨论】:

  • 此解决方案不适用于 MacOSX 10.11.6。操作系统附带的 CURL 使用 SecureTransport。它不是用 OpenSSL 构建的。有人在这里也写了一篇关于这个的帖子:daniel.haxx.se/blog/tag/securetransport
【解决方案2】:

我在 Sierra 上遇到了这个错误。感谢seeliuh在这个issue的帖子,我在做之后修复了它:

1.卸载pycurl。

pip uninstall pycurl

2.export LD_LIBRARY_PATH=<<your homebrew's libcurl path>>

export LD_LIBRARY_PATH=/usr/local/opt/curl/lib

export LIBRARY_PATH=/usr/local/opt/curl/lib

3.重新安装pycurl

easy_install pycurl # you also can try to use pip though using it here probably would cause some problems

注意:

PycURL documentation 指出:

如果 libcurl 与 pycurl 动态链接,您可能需要相应地更改 LD_LIBRARY_PATH 环境变量。这通常仅适用于安装了多个版本的 libcurl,例如一个在 /usr/lib,一个在 /usr/local/lib。

因此,您应该将 LD_LIBRARY_PATH 更改为自制软件的 libcurl 路径。 (您的自制软件的 libcurl 版本应该大于编译时版本。请检查。)

【讨论】:

    【解决方案3】:

    适用于 Ubuntu 18.04

    conda install pycurl

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
    【解决方案4】:

    我在 macOS Mojave 上并使用 conda 虚拟环境。我尝试使用 pip,然后使用 easy_install(适用于许多人)。尝试安装/卸载 curl 等。最后,这个简单的解决方案有效(在您的虚拟环境中),正如上面答案中建议的George Carvalho

    pip uninstall pycurl 
    conda install --name <YOUR ENVIRONMENT NAME> pycurl
    

    问题是当使用 conda 安装到 conda 虚拟环境时,它会正确更新所有依赖项。在我的情况下,使用 conda 安装导致:

    The following NEW packages will be INSTALLED:
    
      krb5               pkgs/main/osx-64::krb5-1.16.1-hddcf347_7
      libcurl            pkgs/main/osx-64::libcurl-7.63.0-h051b688_1000
      libssh2            pkgs/main/osx-64::libssh2-1.8.0-ha12b0ac_4
      pycurl             pkgs/main/osx-64::pycurl-7.43.0.2-py37ha12b0ac_0
    

    【讨论】:

      【解决方案5】:

      我在 Ubuntu 上遇到了同样的问题,但无法让其他解决方案正常工作,所以我最终卸载了 curl 并安装了最新版本。如果您采用这种方法,请注意不要卸载任何依赖项(我错误地将 VirtualBox 和 curl 一起卸载)。然后安装正确的版本,我使用了本指南:https://www.mysterydata.com/install-latest-curl-version-on-ubuntu-vestacp/。此外,如果您安装了 Conda,它可能仍指向错误的 libcurl,因此可能也需要将其删除。

      【讨论】:

        猜你喜欢
        • 2018-06-13
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 2023-03-12
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多