web-dev-qa-db-de.com

ImportError: Der Name HTTPSHandler kann nicht mit PIP importiert werden

Konfrontiert man einen HTTPSHandler-Fehler beim Installieren von Python-Paketen mit pip, folgt der Stack-Trace.

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

Ich habe die Modules/setup.dist-Datei bearbeitet und die SSL-Codezeilen auskommentiert und mit Bezug auf den folgenden Thread neu erstellt: http://forums.opensuse.org/english/get-technical-help-here/applications/488962 -opensuse-python-openssl-2.html

59
user3016020

Benutzer von OSX + Homebrew:

Sie können die neuesten Updates für das Rezept erhalten:

brew reinstall python

Wenn Sie das Problem trotzdem noch erhalten, z. Vielleicht haben Sie Ihr Betriebssystem aufgerüstet, dann müssen Sie zuerst das neueste openssl herunterladen. Sie können prüfen, welche Version und wo sie verwendet wird:

openssl version -a
which openssl

Um das neueste openssl zu erhalten:

brew update
brew install openssl
brew link --overwrite --dry-run openssl  # safety first.
brew link openssl --overwrite

Dies kann eine Warnung ausgeben:

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

Randbemerkung: Diese Warnung bedeutet, dass Sie für andere Apps möglicherweise verwenden möchten

export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include

Dann kompilieren Sie Python neu:

brew uninstall python
brew install python --with-brewed-openssl

oder für Python 3

brew uninstall python3
brew install python3 --with-brewed-openssl
47
dnozay

Sie müssen die OpenSSL-Headerdateien installieren, bevor Sie Python erstellen, wenn Sie SSL-Unterstützung benötigen. Unter Debian und Ubuntu befinden sie sich in einem Paket mit dem Namen libssl-dev. Möglicherweise benötigen Sie weitere Abhängigkeiten, wie hier angegeben .

22
sk1p

Homebrew

Dies wurde wahrscheinlich durch ein Upgrade auf Mavericks verursacht. So habe ich es behoben.

Aktualisieren Sie 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

Installieren Sie Python erneut

Python 3

brew uninstall python3

brew install python3 --with-brewed-openssl

Python 2

brew uninstall python

brew install python --with-brewed-openssl

Diese Antwort konsolidiert alle Antworten und Kommentare von Stack Exchange, die ich gefunden habe, und basiert hauptsächlich auf dieser Apple Stack Exchange-Antwort .

20
Waylon Flinn

Ich hatte dieses Problem unter Mac OSX, auch nachdem ich meinen PFAD usw. bestätigt hatte.

Habe ein; pip uninstall virtualenv dann installiere virtualenv und es schien jetzt zu funktionieren.

Zu der Zeit, als ich Brew zum Linken von openssl gezwungen hatte, löste es die Verknüpfung und virtualenv scheint immer noch zu funktionieren, aber vielleicht liegt es daran, dass es ursprünglich verlinkt wurde, als ich es neu installierte.

9
jay

Sie müssen OpenSSl installieren, bevor Sie Python erstellen und installieren können, um das Problem zu lösen.

Auf Centos:

yum install openssl openssl-devel -y

Quelle

9
leon

Ein anderes Symptom für dieses Problem war für mich, wenn ich in die Python-Konsole meiner Virtualenv ging und import ssl tat, würde dies einen Fehler ergeben. Es stellte sich heraus, dass meine Virtualenv nicht die brew-Version von Python verwendete, sondern nur die Standardinstallation auf meinem Computer. Keine Ahnung, warum die Standardinstallation plötzlich aufgehört hat zu arbeiten, aber hier habe ich das Problem behoben:

  • rmvirtualenv myvirtualenv
  • brew update
  • brew reinstall python
  • mkvirtualenv -p /usr/local/Cellar/python/whatever_version_number/bin/python myvirtualenv
6
David Wright

Es scheint, dass Ihre pipHTTPSHandler benötigt, die Teil der SSL-Bibliothek ist.

OSX

Unter OS X sollten Sie OpenSSL während der Python-Installation verknüpfen (Siehe: # 14497 ).

Für Python 2:

brew reinstall python --with-brewed-openssl
pip install --upgrade pip

Für Python 3:

brew reinstall python3 --with-brewed-openssl
pip3 install --upgrade pip

Sie könnten mehrere Python-Instanzen zusammen haben, um sie aufzulisten:

brew list | grep ^python

Oder listen Sie Ihre Version über ls -al /usr/local/lib/python* auf.

4
kenorb

Ich verwende Redhat und habe das gleiche Problem gefunden.

Meine Lösung ist:

  1. install openssl und openssl-devel ---- yum install openssl openssl-devel -y
  2. install krb5-devel ---- yum installiere krb5-devel
  3. wechseln Sie in das Verzeichnis Ihres Pythons und kompilieren Sie es ---- make

Wenn ich den zweiten Schritt nicht ausführte, wenn ich meinen Python2.7 neu kompilierte, würde das Protokoll sagen: "Fehler beim Erstellen des Moduls _ssl".

3
April

Unter OSX weigerte sich brew mit diesem Fehler, eine Verknüpfung zu seinem openssl herzustellen:

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

Ich konnte es endlich schaffen mit:

  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
0
Brandon

In vielen Fällen wird dies durch eine veraltete virtualenv verursacht. Hier ist ein Skript zum Generieren Ihrer virtualenv (s): https://Gist.github.com/WoLpH/fb98f7dc6ba6f05da2b8

Kopieren Sie es einfach in eine Datei (Download-Link oben) und führen Sie es wie folgt aus: 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
0
Wolph

Für Ubuntu

Zuerst prüfen, ob OpenSL-Develop installiert ist

Sudo apt-get install libssl-dev

Versuchen Sie eine andere Möglichkeit, pip erneut zu installieren.

Sudo apt-get install python-setuptools
Sudo easy_install pip

verwenden Sie setuptools zur Installation von pip anstelle der Installation mit Quellcode, kann das Problem der Abhängigkeit gelöst werden.

0
mymusise