컬 재설치
이 토론에서 모든 제안을 시도했지만 아무도 나를 위해 일하지 않았습니다. 해결책으로 curl과 curlib를 다시 설치했습니다. 그 후 환경 내에서 ssl 지원으로 pycurl을 설치할 수있었습니다.
시작시 :
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
1 부. pip로 재설치 / 설치
먼저 이전 답변에서 제안한 것처럼 pip를 사용하여 virtualenv에서 pycurl을 제거했습니다.
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
여기서 아이디어는 패키지가 캐시되었으며 openssl 옵션으로 다시 설치한다는 것입니다.
또한 다음을 사용하여 pip로 pycurl을 다시 컴파일하려고 시도했습니다.
pip install pycurl --compile pycurl --no-cache
..하지만 실행 후 동일한 오류가 발생했습니다.
python
import pycurl
pycurl.version
ImportError : pycurl : libcurl 링크 타임 SSL 백엔드 ( gnutls )가 컴파일 타임 SSL 백엔드 ( openssl ) 와 다릅니다.
2 부. tar에서 설치
이전 방법이 작동하지 않으면 다음을 사용하여 tar에서 pycurl을 설치하기로 결정했습니다.
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
sudo tar -xzvf pycurl-7.43.0.tar.gz
cd pycurl-7.43.0/
sudo python setup.py --with-ssl install
pycurl을 전역 적으로 설치했지만 virtualenv 내에는 설치하지 않았습니다. 또한 SSL 지원으로 설치되었는지 확인하지 않았지만 여전히 SSL이 없다고 생각했습니다.
Part 3. curl 및 curllib 재설치
마지막으로 전역 curl과 libcurl이 gnutls로 컴파일되기 때문에 pycurl이 환경에 정상적으로 설치되지 않는다는 것을 이해했습니다.
시작하기 전에 다음으로 확인하십시오.
curl-config --configure
출력 라인 중 하나는
'--ssl없이' '--gnutls 포함'
다시 컴파일하려면 :
먼저 컬 제거 :
sudo apt-get purge curl
curl에 필요한 빌드 종속성 설치
sudo apt-get build-dep curl
최신 libcurl 가져 오기 (2016 년 12 월 20 일 기준)
mkdir ~/curl
wget http://curl.haxx.se/download/curl-7.51.0.tar.bz2
tar -xvjf curl-7.51.0.tar.bz2
cd curl-7.51.0
소스에서 앱을 빌드하는 일반적인 단계
./configure
./make
sudo make install
openssl이 올바르게 설치된 경우 configure가 자동으로 찾습니다. 출력은 다음과 같습니다.
curl 버전 : 7.51.0
호스트 설정 : x86_64-pc-linux-gnu
설치 접두사 : / usr / local
컴파일러 : gcc
SSL 지원 : 활성화 됨 (OpenSSL) ...
C 레벨 lib 위치 캐시 ( "공유 라이브러리 캐시") 문제 해결
sudo ldconfig
이제 환경 내에서 pycurl을 다시 설치하십시오.
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
pip install pycurl-7.43.0.tar.gz --global-option="--with-openssl"
결과는 다음과 같아야합니다.
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'