ImportError : PIP를 사용하여 이름 HTTPSHandler를 가져올 수 없습니다.
pip를 사용하여 Python 패키지를 설치하는 동안 HTTPSHandler 오류가 발생하면 다음은 스택 추적입니다.
--------desktop:~$ pip install Django==1.3
Traceback (most recent call last):
File "/home/env/.genv/bin/pip", line 9, in <module>
load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
File "/home/env/.genv/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/home/env/.genv/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/home/env/.genv/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/home/env/.genv/lib/python2.7/site-packages/pip/__init__.py", line 10, in <module>
from pip.util import get_installed_distributions, get_prog
File "/home/env/.genv/lib/python2.7/site-packages/pip/util.py", line 17, in <module>
from pip.vendor.distlib import version
File "/home/env/.genv/lib/python2.7/site-packages/pip/vendor/distlib/version.py", line 13, in <module>
from .compat import string_types
File "/home/env/.genv/lib/python2.7/site-packages/pip/vendor/distlib/compat.py", line 31, in <module>
from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler
저는 Modules / setup.dist 파일을 편집하고 SSL 코드 줄의 주석 처리를 제거하고 다음 스레드를 참조하여 다시 작성했습니다. http://forums.opensuse.org/english/get-technical-help-here/applications/488962-opensuse -python-openssl-2.html
OSX + 홈브류 사용자 :
레시피에 대한 최신 업데이트를 얻을 수 있습니다.
brew reinstall python
그러나 여전히 문제가 발생하면 (예 : OS를 업그레이드 한 경우) 먼저 최신 openssl을 가져와야 할 수 있습니다. 버전과 사용 위치를 확인할 수 있습니다.
openssl version -a
which openssl
최신 openssl을 얻으려면 :
brew update
brew install openssl
brew link --overwrite --dry-run openssl # safety first.
brew link openssl --overwrite
다음과 같은 경고가 발생할 수 있습니다.
bash-4.3$ brew link --overwrite --dry-run openssl
Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
참고 :이 경고는 다른 앱의 경우 사용할 수 있음을 의미합니다.
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
그런 다음 파이썬을 다시 컴파일하십시오.
brew uninstall python
brew install python --with-brewed-openssl
또는 파이썬 3의 경우
brew uninstall python3
brew install python3 --with-brewed-openssl
SSL 지원이 필요한 경우 Python을 빌드하기 전에 OpenSSL 헤더 파일을 설치해야합니다. Debian 및 Ubuntu에서는 libssl-dev
. 여기에 설명 된대로 더 많은 종속성이 필요할 수 있습니다 .
홈브류
이것은 아마도 Mavericks 로의 업그레이드 때문일 것입니다. 해결 방법은 다음과 같습니다.
OpenSSL 업데이트
#make a copy of the existing library, just in case
sudo cp /usr/bin/openssl /usr/bin/openssl.apple
# update openssl
brew update
brew install openssl
brew link --force openssl
# reload terminal paths
hash -r
Python 재설치
파이썬 3
brew uninstall python3
brew install python3 --with-brewed-openssl
파이썬 2
brew uninstall python
brew install python --with-brewed-openssl
이 답변은 내가 찾은 모든 Stack Exchange 답변과 의견을 통합하며 대부분이 Apple Stack Exchange 답변을 기반으로합니다 .
내 PATH 등을 확인한 후에도 Mac OSX 에서이 문제가 발생했습니다.
했습니까; pip uninstall virtualenv 다음 virtualenv를 설치하면 지금 작동하는 것 같습니다.
당시 나는 brew가 openssl을 링크하도록 강요했고, 링크를 해제했고 virtualenv는 여전히 작동하는 것처럼 보이지만 아마도 다시 설치할 때 원래 링크 되었기 때문일 수 있습니다.
문제를 해결하려면 Python을 만들고 설치하기 전에 OpenSSl을 설치해야합니다.
Centos에서 :
yum install openssl openssl-devel -y
이 문제의 또 다른 증상은 내 virtualenv의 파이썬 콘솔에 들어가서 import ssl
오류가 발생하는 것입니다. 내 virtualenv가 brew
Python 버전을 사용하지 않고 내 컴퓨터에 기본 설치되어 있음 이 밝혀졌습니다 . 기본 설치가 갑자기 작동을 멈춘 이유는 알 수 없지만 문제를 해결 한 방법은 다음과 같습니다.
rmvirtualenv myvirtualenv
brew update
brew reinstall python
mkvirtualenv -p /usr/local/Cellar/python/whatever_version_number/bin/python myvirtualenv
도서관의 일부인 귀하의 pip
요구 사항 HTTPSHandler
이 SSL
있습니다.
OSX
OS X에서는 Python 설치 중에 OpenSSL을 연결해야합니다 (참조 : # 14497 ).
Python 2 :
brew reinstall python --with-brewed-openssl
pip install --upgrade pip
Python 3 :
brew reinstall python3 --with-brewed-openssl
pip3 install --upgrade pip
여러 Python 인스턴스를 함께 사용하여 실행 목록을 표시 할 수 있습니다.
brew list | grep ^python
또는을 통해 버전을 나열하십시오 ls -al /usr/local/lib/python*
.
나는 Redhat을 사용하고 있으며 동일한 문제를 만났습니다.
내 솔루션은 다음과 같습니다.
- openssl 및 openssl-devel 설치 ---- yum install openssl openssl-devel -y
- krb5-devel 설치 ---- yum krb5-devel 설치
- 파이썬의 디렉토리로 변경하고 다시 컴파일하십시오 ---- make
두 번째 단계를 수행하지 않으면 python2.7을 다시 컴파일하면 로그에 "fail to build module _ssl"이 표시됩니다.
대부분의 경우 이는 오래된 virtualenv로 인해 발생합니다. 다음은 virtualenv를 다시 생성하는 스크립트입니다. https://gist.github.com/WoLpH/fb98f7dc6ba6f05da2b8
파일 (위의 다운로드 가능한 링크)에 복사하고 다음과 같이 실행하기 만하면됩니다. zsh -e recreate_virtualenvs.sh <project_name>
#!/bin/zsh -e
if [ ! -d "$PROJECT_HOME" ]; then
echo 'Your $PROJECT_HOME needs to be defined'
echo 'http://virtualenvwrapper.readthedocs.org/en/latest/install.html#location-of-project-directories'
exit 1
fi
if [ "" = "$1" ]; then
echo "Usage: $0 <project_name>"
exit 1
fi
env="$1"
project_dir="$PROJECT_HOME/$1"
env_dir="$HOME/envs/$1"
function command_exists(){
type $1 2>/dev/null | grep -vq ' not found'
}
if command_exists workon; then
echo 'Getting virtualenvwrapper from environment'
# Workon exists, nothing to do :)
elif [ -x ~/bin/mount_workon ]; then
echo 'Using mount workon'
# Optional support for packaged project directories and virtualenvs using
# https://github.com/WoLpH/dotfiles/blob/master/bin/mount_workon
. ~/bin/mount_workon
mount_file "$project_dir"
mount_file "$env_dir"
elif command_exists virtualenvwrapper.sh; then
echo 'Using virtualenvwrapper'
. $(which virtualenvwrapper.sh)
fi
if ! command_exists workon; then
echo 'Virtualenvwrapper not found, please install it'
exit 1
fi
rmvirtualenv $env || true
echo "Recreating $env"
mkvirtualenv $env || true
workon "$env" || true
pip install virtualenv{,wrapper}
cd $project_dir
setvirtualenvproject
if [ -f setup.py ]; then
echo "Installing local package"
pip install -e .
fi
function install_requirements(){
# Installing requirements from given file, if it exists
if [ -f "$1" ]; then
echo "Installing requirements from $1"
pip install -r "$1"
fi
}
install_requirements requirements_test.txt
install_requirements requirements-test.txt
install_requirements requirements.txt
install_requirements test_requirements.txt
install_requirements test-requirements.txt
if [ -d docs ]; then
echo "Found docs, installing sphinx"
pip install sphinx{,-pypi-upload} py
fi
echo "Installing ipython"
pip install ipython
if [ -f tox.ini ]; then
deps=$(python -c "
parser=__import__('ConfigParser').ConfigParser();
parser.read('tox.ini');
print parser.get('testenv', 'deps').strip().replace('{toxinidir}/', '')")
echo "Found deps from tox.ini: $deps"
echo $deps | parallel -v --no-notice pip install {}
fi
if [ -f .travis.yml ]; then
echo "Found deps from travis:"
installs=$(grep 'pip install' .travis.yml | grep -v '\$' | sed -e 's/.*pip install/pip install/' | grep -v 'pip install . --use-mirrors' | sed -e 's/$/;/')
echo $installs
eval $installs
fi
deactivate
OSX에서 brew는 다음 오류와 함께 openssl에 대한 링크를 계속 거부했습니다.
15:27 $ brew link --force openssl
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
I finally was able to get it working with:
brew remove openssl
brew uninstall --force openssl
brew install openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
brew remove python
brew update
brew install python
For Ubuntu
First check wheather install openssl-develop
sudo apt-get install libssl-dev
Try another way to reinstall pip
sudo apt-get install python-setuptools
sudo easy_install pip
use setuptools
to install pip rather than install with source code may can solve the problem of dependency.
참고URL : https://stackoverflow.com/questions/20688034/importerror-cannot-import-name-httpshandler-using-pip
'IT Share you' 카테고리의 다른 글
JavaFX-실제로 브라우저에 배포 할 수 있습니까? (0) | 2020.11.30 |
---|---|
Mercurial에서 마지막 커밋을 어떻게 "롤백"합니까? (0) | 2020.11.30 |
Proxyquire, rewire, SandboxedModule 및 Sinon : 장단점 (0) | 2020.11.30 |
Swift에서 두 사전을 어떻게 비교합니까? (0) | 2020.11.30 |
프로그래밍 방식으로 C ++ 배열의 크기를 결정합니까? (0) | 2020.11.30 |