Pip: Verwenden Sie pip install über ein privates Repository, das durch .htaccess geschützt ist?

Erstellt am 15. März 2011  ·  21Kommentare  ·  Quelle: pypa/pip

Hi,

Ich möchte ein privates Python-Index-Repository mit der Datei ".htaccess" schützen.

Wenn ich pip , um ein Paket aus diesem Repository zu installieren, erhalte ich diesen Fehler:

Getting page http://pypi.is-webdesign.com/simple/
Could not fetch URL http://pypi.is-webdesign.com/simple/: HTTP Error 401: Unauthorized

Wie kann ich Login-/Passwortparameter mit pip verwenden?

Pip unterstützt diese Funktion nicht? Wenn nicht, ist es geplant?

Grüße,
Stephan


auto-locked enhancement

Hilfreichster Kommentar

pip unterstützt grundlegende Authentifizierung über seinen URLOpener,
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67

Verwenden Sie einfach eine URL wie http://username:password@server/whatever/


Original Comment By: Jannis Leidel

Alle 21 Kommentare

pip unterstützt grundlegende Authentifizierung über seinen URLOpener,
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67

Verwenden Sie einfach eine URL wie http://username:password@server/whatever/


Original Comment By: Jannis Leidel

Mit der 0.8.1 pip-Version kann ich Folgendes tun:

pip install -f http://username:[email protected]/simple/ my_package

Ich weiß nicht, ob diese Funktion dokumentiert ist oder nicht.

Das schau ich mir gleich mal an.

Grüße, Stephan


Original Comment By: Stéphane Klein

Jannis, ich habe es wie gesagt versucht, aber es hat bei mir nicht funktioniert, wenn ich HTTPS verwende.

Kann mir das jemand bestätigen? Ist es ein bekannter Fehler?

Vielen Dank! :-)


Original Comment By: Guilherme Gondim

Ich kann bestätigen, dass es mit https nicht funktioniert. Ich bekomme folgenden Fehler:

Traceback (most recent call last):

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/basecommand.py", Zeile 115, in main

    self.run(options, args)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/commands/install.py", Zeile 155, in Ausführung

    requirement_set.install_files(finder, force_root_egg_info=self.bundle,

bündel=selbst.bündel)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/req.py", Zeile 823, in install_files

    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/index.py", Zeile 55, in find_requirement

    page = self._get_page(main_index_url, req)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/index.py", Zeile 282, in _get_page

    return HTMLPage.get_page(link, req, cache=self.cache)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.6.3-py2.6.egg/pip/index.py", Zeile 363, in 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

Neuere Versionen von pip scheinen bei der Verwendung eines Benutzernamens den folgenden Fehler auszulösen
und Passwort:

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-

Pakete/pip-0.8.1-py2.6.egg/pip/index.py", Zeile 241, in _get_queued_page

    page = self._get_page(location, req)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.8.1-py2.6.egg/pip/index.py", Zeile 326, in _get_page

    return HTMLPage.get_page(link, req, cache=self.cache)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.8.1-py2.6.egg/pip/index.py", Zeile 424, in get_page

    content_type = cls._get_content_type(url)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.8.1-py2.6.egg/pip/index.py", Zeile 486, in _get_content_type

    resp = urlopen(req)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.8.1-py2.6.egg/pip/download.py", Zeile 88, im Aufruf

    response = self.get_response(url)

  File "/home/ian/.virtualenvs/test/lib/python2.6/site-

Pakete/pip-0.8.1-py2.6.egg/pip/download.py", Zeile 107, in 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

Das Problem tritt auf, wenn pip versucht, eine Kopfanforderung für die Archivdatei durchzuführen, aber
erreicht eine 401. https://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -86

Die an self.get_response() übergebene URL ist ein urllib2.Request-Objekt, aber
get_response() versucht, urlsplit() darauf aufzurufen. was den obigen Fehler auslöst.
Die Datei scheint jedoch heruntergeladen zu werden.


Original Comment By: Ian Lewis

Sieht so aus, als ob dies behoben ist, ich habe einen privaten Index unter HTTPS + Basic Auth und es funktioniert einfach mit --index-url https://user:[email protected] .

Kann das jemand bestätigen und das Problem schließen?

Habe gerade eine Pull-Anfrage (https://github.com/pypa/pip/pull/786) zu diesem Thema hinzugefügt.

@brutasse kann ich bestätigen. Schließ das?

1.5.6 hat immer noch das Problem.

Können wir das Thema, über das jetzt gesprochen wird, genau bestätigen?

Es tut uns leid. Funktioniert bei mir. Mein Fehler :-D
Am 18. Juli 2014 um 05:20 Uhr schrieb "Matt Iversen" [email protected] :

Können wir das Thema, über das jetzt gesprochen wird, genau bestätigen?


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/pypa/pip/issues/51#issuecomment -49406680.

Immer noch notwendig Benutzername und Passwort in die URL eintragen?

Wird es in pip==6.0.8 ?

Ich verwende den privaten PyPI-Index und führe die Installation wie folgt aus:
pip install <my_package> --cert=<required_for_some_reason> --extra-index-url https://username:[email protected]/simple/ --allow-all-external

und dann funktioniert es, fragt aber interaktiv nach Benutzername und Passwort. Es ist kein Fall, wenn dieses Skript außerhalb der Shell mit CLI ausgeführt wurde.

Bitte bestätigen Sie, ob es mit dem hier besprochenen Problem verknüpft ist, oder schlagen Sie vor, ein weiteres Problem zu erstellen, oder weisen Sie auf die Lösung hin.

@vladignatyev Ich bin gerade auf das gleiche Problem

Ich habe dieses Problem auch mit pip 7.1.2. Es gibt ein Symbol im Passwort, das eine URL-Codierung erfordert, pip kann sich nicht authentifizieren (erhält eine 401-Antwort) und fordert interaktiv zur Eingabe von Benutzername/Passwort auf. Es funktioniert dann einwandfrei, wenn ich den Benutzer/Pass interaktiv eingebe. Wie @bcbrown vermute ich, dass das Passwort nicht entschlüsselt wird .

BITTE BEHEBEN SIE DIESES SO BALD WIE MÖGLICH PIP 8.1.2

Ich bin gerade mit 9.0.3 gestoßen .... Ist das ernsthaft immer noch ein Problem?

Das Parsen des Benutzernamens/Passworts aus der URL funktioniert nur, wenn der Port angegeben ist.
(Zumindest auf Debian 9, Python 2.7.13, pip 18.1, aber ich hatte dieses Problem auch auf anderen Systemen)

Dies fragt nach Benutzername/Passwort: pip install -f https://user:[email protected]/pkgs requests
Das funktioniert: pip install -f https://user:[email protected]:443/pkgs requests

Dies funktioniert mit pip 18.1, ist aber in der neuesten Version (19.1) defekt. Nach dem Zurücksetzen auf 18.1 bestätigt, dass es funktioniert.

Das Parsen des Benutzernamens/Passworts aus der URL funktioniert nur, wenn der Port angegeben ist.
(Zumindest auf Debian 9, Python 2.7.13, pip 18.1, aber ich hatte dieses Problem auch auf anderen Systemen)

Dies fragt nach Benutzername/Passwort: pip install -f https://user:[email protected]/pkgs requests
Das funktioniert: pip install -f https://user:[email protected]:443/pkgs requests

@olt Ich hatte das gleiche Problem mit pip 19.1.1 und konnte es zum Laufen bringen, indem ich den Port wie von Ihnen vorgeschlagen gesetzt habe. Ziemlich obskure Problemumgehung, ich wünschte, ich könnte Ihre Antwort mehr positiv bewerten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen