MAC OS ImportError: pycurl: libcurl链接时版本(7.37.1)比编译时版本(7.43.0)早。

5 人关注

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

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

how to solve it ? my system is yosemite.

3 个评论
你打开的是 python 的系统版本还是第三方版本? 替换代码1】的设置是什么?
我使用pyenv来管理我的Python,系统版本为Python 2.7和第三方Python 3.5。
好了,两天后,我什么都没做就把它弄好了......我很困惑......
python
macos
pycurl
Qi.Liu
Qi.Liu
发布于 2016-06-14
6 个回答
DataAlchemist
DataAlchemist
发布于 2019-02-27
已采纳
0 人赞同

我在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

Note:

PycURL文档指出,。

如果libcurl是与pycurl动态链接的,你可能需要相应地改变LD_LIBRARY_PATH环境变量。这通常只适用于安装了不止一个版本的libcurl,比如一个在/usr/lib,一个在/usr/local/lib。

所以,你应该把你的LD_LIBRARY_PATH改为你自制的libcurl路径。(你自制的libcurl的版本应该比编译时的版本大。请检查这一点)。

Yevhen Bondar
Yevhen Bondar
发布于 2019-02-27
0 人赞同

在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)

我没有设法改变链接时的版本(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!"
    
beyondfloatingpoint
beyondfloatingpoint
发布于 2019-02-27
0 人赞同

好吧,既然这个答案仍然在谷歌搜索中出现,我就分享一下我解决这个问题的方法。

主要的想法是安装 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
Szymon Palucha
Szymon Palucha
发布于 2019-02-27
0 人赞同

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

George Carvalho
George Carvalho
发布于 2019-02-27
0 人赞同

For Ubuntu 18.04

conda install pycurl

Blue
谢谢你的这个代码片段,它可能会提供一些有限的、直接的帮助。A 适当的解释将极大地提高其长期价值 by showing why 这是一个很好的解决问题的办法,对今后有其他类似问题的读者来说会更有用。请 edit 你的答案要增加一些解释,包括你所做的假设。
SuperCatman
SuperCatman
发布于 2019-02-27
0 人赞同

我在macOS Mojave上,使用conda虚拟环境。我试着用pip,然后用easy_install(这对很多人来说是有效的)。试着安装/卸载了curl等等。最后,这个简单的解决方案成功了(在你的虚拟环境中),因为 乔治-卡瓦略 在上面的回答中建议。

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

问题是,当用conda安装到conda虚拟环境时,它会正确地更新所有的依赖关系。在我的例子中,用conda安装的结果是。

The following NEW packages will be INSTALLED: