MAC OS 导入错误:pycurl:libcurl 链接时版本 (7.37.1) 比编译时版本 (7.43.0) 旧

Qi.*_*Liu 3 python macos pycurl

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

ImportError: pycurl: libcurl link-time version (7.37.1) is older than compile-time version (7.43.0).
Run Code Online (Sandbox Code Playgroud)

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

Dat*_*ist 7

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

1.卸载pycurl。

pip uninstall pycurl
Run Code Online (Sandbox Code Playgroud)

2.导出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
Run Code Online (Sandbox Code Playgroud)

3.重新安装pycurl

easy_install pycurl # you also can try to use pip though using it here probably would cause some problems
Run Code Online (Sandbox Code Playgroud)

笔记:

PycURL 文档指出:

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

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


Eug*_*nij 6

Mac 11.6.5 和 python 3.10 面临同样的问题

~ > pip install pycurl
~ > python -c 'import pycurl'
ImportError: pycurl: libcurl link-time version (7.64.1) is older than compile-time version (7.77.0)
Run Code Online (Sandbox Code Playgroud)

我没有设法更改链接时版本(7.64.1),因此我下载了链接的curl-7.64.1的确切版本并使用它进行pycurl编译。

# Remove installed version
pip uninstall -y pycurl
brew uninstall curl

# Install openssl for pycurl compiling
brew install openssl || brew update openssl

# Downloading sources
wget https://curl.haxx.se/download/curl-7.64.1.tar.bz2
tar -xf curl-7.64.1.tar.bz2

# Setting up compiler flags and PATH
export PATH="$(pwd)/curl-7.64.1/bin:$PATH"
export LDFLAGS="-L$(pwd)/curl-7.64.1/lib -L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I$(pwd)/curl-7.64.1/include -I/usr/local/opt/openssl@3/include"

# Installing
pip install --no-cache-dir --compile --install-option="--with-openssl" pycurl

# Checking up 
python -c "import pycurl" && echo "Success!"
Run Code Online (Sandbox Code Playgroud)


bey*_*int 3

好的,由于这个答案仍然出现在 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
Run Code Online (Sandbox Code Playgroud)

所以你稍后可以使用 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"
Run Code Online (Sandbox Code Playgroud)

希望有帮助!

  • 此解决方案在 MacOSX 10.11.6 下不起作用。操作系统附带的 CURL 使用 SecureTransport。它不是用 OpenSSL 构建的。有人也在这里写了一篇关于此的文章:https://daniel.haxx.se/blog/tag/securetransport/ (3认同)