Hola,
Me gustaría proteger un repositorio privado de Python Index con un archivo ".htaccess".
Cuando uso pip
para instalar algún paquete de este repositorio, tengo este error:
Getting page http://pypi.is-webdesign.com/simple/
Could not fetch URL http://pypi.is-webdesign.com/simple/: HTTP Error 401: Unauthorized
¿Cómo puedo usar los parámetros de inicio de sesión / contraseña con pip?
¿Pip no admite esta función? ¿Si no está planeado?
Saludos,
Stephane
pip admite autenticación básica a través de su URLOpener,
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67
Simplemente use una URL como http: // nombre de usuario: contraseña @ servidor / lo que sea /
Original Comment By: Jannis Leidel
Con la versión 0.8.1 pip puedo hacer:
pip install -f http://username:[email protected]/simple/ my_package
No sé si esta característica está documentada o no.
Lo miraré tan pronto como.
Saludos, Stephane
Original Comment By: Stéphane Klein
Jannis, lo intenté como dijiste, pero no me funcionó cuando usé HTTPS.
¿Alguien me lo puede confirmar? ¿Es un error conocido?
¡Gracias! :-)
Original Comment By: Guilherme Gondim
Puedo confirmar que no funciona con https. Obtuve el siguiente error:
Traceback (most recent call last):
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.6.3-py2.6.egg / pip / basecommand.py ", línea 115, en main
self.run(options, args)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
packages / pip-0.6.3-py2.6.egg / pip / commands / install.py ", línea 155, en ejecución
requirement_set.install_files(finder, force_root_egg_info=self.bundle,
paquete = self.bundle)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.6.3-py2.6.egg / pip / req.py ", línea 823, en install_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.6.3-py2.6.egg / pip / index.py ", línea 55, en find_requirement
page = self._get_page(main_index_url, req)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.6.3-py2.6.egg / pip / index.py ", línea 282, en _get_page
return HTMLPage.get_page(link, req, cache=self.cache)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.6.3-py2.6.egg / pip / index.py ", línea 363, en get_page
resp = urllib2.urlopen(url)
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1169, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1107, in do_open
h = http_class(host, timeout=req.timeout) # will parse host:port
File "/usr/lib/python2.6/httplib.py", line 1101, in __init__
HTTPConnection.__init__(self, host, port, strict, timeout)
File "/usr/lib/python2.6/httplib.py", line 657, in __init__
self._set_hostport(host, port)
File "/usr/lib/python2.6/httplib.py", line 682, in _set_hostport
raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
InvalidURL: nonnumeric port: '[email protected]'
Original Comment By: Ian Lewis
Las versiones más nuevas de pip parecen arrojar el siguiente error al usar un nombre de usuario
y contraseña:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/usr/lib/python2.6/threading.py", line 484, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
packages / pip-0.8.1-py2.6.egg / pip / index.py ", línea 241, en _get_queued_page
page = self._get_page(location, req)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.8.1-py2.6.egg / pip / index.py ", línea 326, en _get_page
return HTMLPage.get_page(link, req, cache=self.cache)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
paquetes / pip-0.8.1-py2.6.egg / pip / index.py ", línea 424, en get_page
content_type = cls._get_content_type(url)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
packages / pip-0.8.1-py2.6.egg / pip / index.py ", línea 486, en _get_content_type
resp = urlopen(req)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
packages / pip-0.8.1-py2.6.egg / pip / download.py ", línea 88, en la llamada
response = self.get_response(url)
File "/home/ian/.virtualenvs/test/lib/python2.6/site-
packages / pip-0.8.1-py2.6.egg / pip / download.py ", línea 107, en get_response
scheme, netloc, path, query, frag = urlparse.urlsplit(url)
File "/usr/lib/python2.6/urlparse.py", line 147, in urlsplit
i = url.find(':')
File "/usr/lib/python2.6/urllib2.py", line 218, in __getattr__
raise AttributeError, attr
AttributeError: find
El problema ocurre cuando pip intenta hacer una solicitud principal en el archivo de almacenamiento, pero
alcanza un 401. https://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -86
La URL pasada a self.get_response () es un objeto urllib2.Request pero
get_response () intenta llamar a urlsplit () en él. que arroja el error anterior.
Sin embargo, el archivo parece descargarse.
Original Comment By: Ian Lewis
Parece que esto está arreglado, tengo un índice privado bajo HTTPS + autenticación básica y simplemente funciona con --index-url https://user:[email protected]
.
¿Alguien puede confirmar esto y cerrar el problema?
Acabo de agregar una solicitud de extracción (https://github.com/pypa/pip/pull/786) vinculada a este tema.
@brutasse puedo confirmar. ¿Cierra esto?
1.5.6 todavía tiene el problema.
¿Podemos confirmar exactamente el tema del que se habla ahora?
Perdón. Funciona para mi. Mi error :-D
El 18 de julio de 2014 a las 5:20 a. M., "Matt Iversen" [email protected] escribió:
¿Podemos confirmar exactamente el tema del que se habla ahora?
-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/pypa/pip/issues/51#issuecomment -49406680.
¿Aún es necesario poner el nombre de usuario y la contraseña en la URL?
¿Es compatible con pip==6.0.8
?
Utilizo un índice PyPI privado y ejecuto una instalación como esta:
pip install <my_package> --cert=<required_for_some_reason> --extra-index-url https://username:[email protected]/simple/ --allow-all-external
y luego funciona, pero solicita el nombre de usuario y la contraseña de forma interactiva. No es un caso cuando este script se ejecutó fuera del shell con CLI.
Confirme si está vinculado al problema discutido aquí o sugiera si debería crear otro problema, o señale la solución.
@vladignatyev Acabo de encontrarme con el mismo problema que mencionaste, de pedir usuario / contraseña de forma interactiva. Reduje el problema a tener un símbolo en la contraseña que necesita codificación de URL. Si no codifico la contraseña en URL, no se puede analizar la URL. Si codifico la contraseña con url, creo que pip no la está decodificando antes de intentar la autenticación.
También tengo este problema con pip 7.1.2. Hay un símbolo en la contraseña que necesita codificación de URL, pip no se autentica (obtiene una respuesta 401) y solicita el nombre de usuario / contraseña de forma interactiva. Entonces funciona bien si entro al usuario / paso de forma interactiva. Al igual que @bcbrown , sospecho que no está decodificando la contraseña por URL.
POR FAVOR, SOLICITE ESTO LO ANTES POSIBLE PIP 8.1.2
Me encontré con esto usando 9.0.3
.... ¿Esto sigue siendo un problema en serio?
Analizar el nombre de usuario / contraseña de la URL solo funciona cuando se especifica el puerto.
(Al menos en Debian 9, Python 2.7.13, pip 18.1, pero también tuve este problema en otros sistemas)
Esta consulta por nombre de usuario / contraseña: pip install -f https://user:[email protected]/pkgs requests
Esto funciona: pip install -f https://user:[email protected]:443/pkgs requests
Esto funciona con pip 18.1 pero está roto en la última versión (19.1). Confirmado después de volver a 18.1, funciona.
Analizar el nombre de usuario / contraseña de la URL solo funciona cuando se especifica el puerto.
(Al menos en Debian 9, Python 2.7.13, pip 18.1, pero también tuve este problema en otros sistemas)Esta consulta por nombre de usuario / contraseña:
pip install -f https://user:[email protected]/pkgs requests
Esto funciona:pip install -f https://user:[email protected]:443/pkgs requests
@olt Tuve el mismo problema al usar pip 19.1.1 y logré que funcionara colocando el puerto como sugieres. Solución bastante oscura, me gustaría poder votar más tu respuesta.
Comentario más útil
pip admite autenticación básica a través de su URLOpener,
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67
Simplemente use una URL como http: // nombre de usuario: contraseña @ servidor / lo que sea /