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:
- instalar openssl y openssl-devel ---- yum install openssl openssl-devel -y
- instalar krb5-devel ---- yum instalar krb5-devel
- 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
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*
.