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)
如何解决?我的系统是优胜美地。
我在 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 版本应该大于编译时版本。请检查。)
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)
好的,由于这个答案仍然出现在 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,链接到你的libcurl和openssl
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)
希望有帮助!