example python ssl openssl pip

openssl python example



ImportError: no se puede importar el nombre HTTPSHandler usando PIP (11)

Homebrew

Esto fue probablemente causado por una actualización a Mavericks. Así es como lo arreglé.

Actualiza 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

Reinstalar Python

Python 3

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

Python 2

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

Esta respuesta consolida todas las respuestas y comentarios de Stack Exchange que encontré, y se basa principalmente en esta respuesta de Apple Stack Exchange .

Frente a un error de HTTPSHandler al instalar paquetes de Python usando pip, lo siguiente es el seguimiento de la pila,

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

Solía ​​editar el archivo Modules / setup.dist y descomentar las líneas de código SSL y reconstruirlo, con referencia al siguiente hilo: http://forums.opensuse.org/english/get-technical-help-here/applications/488962-opensuse-python-openssl-2.html


Para Ubuntu

Primero compruebe si instala installsl-develop

sudo apt-get install libssl-dev

Intenta con otra forma de reinstalar pip

sudo apt-get install python-setuptools sudo easy_install pip

use setuptools para instalar pip en lugar de instalar con el código fuente puede resolver el problema de la dependencia.


Usuarios de homebrew OSX +:

Puede obtener las últimas actualizaciones de la receta:

brew reinstall python

Pero si todavía tiene el problema, por ejemplo, tal vez haya actualizado su sistema operativo, entonces es posible que deba obtener el último archivo openssl primero. Puede verificar qué versión y de dónde se usa:

openssl version -a which openssl

Para obtener el último openssl:

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

Esto puede emitir una advertencia:

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

Nota al margen: esta advertencia significa que para otras aplicaciones, es posible que desee utilizar

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

Luego recompila Python:

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

o para python 3

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


En OSX, brew se rehusaba a enlazar con su openssl con este error:

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

Finalmente pude hacerlo funcionar con:

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


En muchos casos esto es causado por un virtualenv desactualizado, aquí hay un script para regenerar tus virtualenv (s): https://gist.github.com/WoLpH/fb98f7dc6ba6f05da2b8

Simplemente cópielo en un archivo (enlace descargable arriba) y ejecútelo así: 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


Estaba teniendo este problema en Mac OSX, incluso después de confirmar mi RUTA, etc.

Hizo a; pip uninstall virtualenv luego instalar virtualenv y parecía funcionar ahora.

En el momento en que forcé brebaje para enlazar openssl, lo desvinculé y virtualenv aún parece funcionar, pero tal vez sea porque originalmente estaba vinculado cuando lo reinstalé.


Estoy usando Redhat y he encontrado el mismo problema.

Mi solución es:

  1. instalar openssl y openssl-devel ---- yum install openssl openssl-devel -y
  2. instalar krb5-devel ---- yum instalar krb5-devel
  3. cambia al directorio de tu python y recompila ---- haz

Si no hice el segundo paso, cuando volví a compilar mi python2.7, el registro decía "no compilar el módulo _ssl".


Necesita instalar OpenSSl antes de realizar e instalar Python para resolver el problema.

En Centos:

yum install openssl openssl-devel -y

source


Necesita instalar los archivos de encabezado OpenSSL antes de compilar Python si necesita soporte SSL. En Debian y Ubuntu, están en un paquete llamado libssl-dev . Es posible que necesite algunas dependencias adicionales, como se indica aquí .


Otro síntoma de este problema para mí fue que si ingresé a la consola de mi Virtualenv Python e importé import ssl se saldría con un error. Resulta que mi virtualenv no estaba usando la versión brew de python, solo la instalación predeterminada en mi máquina. No tengo idea de por qué la instalación predeterminada de repente dejó de funcionar, pero así es como lo resolvió el problema:

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

Parece que tu pip requiere HTTPSHandler que es parte de la biblioteca SSL .

OSX

En OS X, debe vincular OpenSSL durante la instalación de Python (Ver: #14497 ).

Para Python 2:

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

Para Python 3:

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

Puede tener varias instancias de Python juntas, para mostrarlas en ejecución:

brew list | grep ^python

O haga una lista de su versión a través de ls -al /usr/local/lib/python* .