Pip: .htaccessで保護されたプライベートrepostioryを介してpipinstallを使用しますか?

作成日 2011年03月15日  ·  21コメント  ·  ソース: pypa/pip

やあ、

「.htaccess」ファイルでプライベートPythonインデックスリポジトリを保護したいのですが。

pipを使用してこのリポジトリからパッケージをインストールすると、次のエラーが発生します。

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

ログイン/パスワードパラメータをpipで使用するにはどうすればよいですか?

Pipはこの機能をサポートしていませんか? そうでない場合は計画されていますか?

よろしく、
ステファン


  • Bitbucket: https
  • 当初の報告者:StéphaneKlein
  • 当初の作成日:2010-11-15 13:46:58
auto-locked enhancement

最も参考になるコメント

pipは、URLOpenerを介した基本認証をサポートしています。
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67

http:// username:password @ server / whatever /のようなURLを使用するだけ


Original Comment By: Jannis Leidel

全てのコメント21件

pipは、URLOpenerを介した基本認証をサポートしています。
http://bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -67

http:// username:password @ server / whatever /のようなURLを使用するだけ


Original Comment By: Jannis Leidel

0.8.1 pipバージョンで私はできる:

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

この機能が文書化されているかどうかはわかりません。

すぐに見ます。

よろしく、ステファン


Original Comment By: Stéphane Klein

ジャニス、あなたが言ったように私は試しましたが、HTTPSを使用しているときはうまくいきませんでした。

誰かが私のためにそれを確認できますか? 既知のバグですか?

ありがとう! :-)


Original Comment By: Guilherme Gondim

httpsでは動作しないことを確認できます。 次のエラーが発生します。

Traceback (most recent call last):

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

packages / pip-0.6.3-py2.6.egg / pip / basecommand.py "、115行目、メイン

    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 "、155行目、実行中

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

bundle = self.bundle)

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

packages / pip-0.6.3-py2.6.egg / pip / req.py "、823行目、install_files

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

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

packages / pip-0.6.3-py2.6.egg / pip / index.py "、55行目、find_requirement

    page = self._get_page(main_index_url, req)

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

packages / pip-0.6.3-py2.6.egg / pip / index.py "、行282、_get_page

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

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

packages / pip-0.6.3-py2.6.egg / pip / index.py "、363行目、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

新しいバージョンのpipは、ユーザー名を使用すると次のエラーをスローするようです
およびパスワード:

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 "、241行目、_get_queued_pa​​ge

    page = self._get_page(location, req)

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

packages / pip-0.8.1-py2.6.egg / pip / index.py "、行326、_get_page

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

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

packages / pip-0.8.1-py2.6.egg / pip / index.py "、424行目、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 "、行486、_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 "、88行目、通話中

    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 "、107行目、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

この問題は、pipがアーカイブファイルに対してheadリクエストを実行しようとしたときに発生しますが、
401にヒットします。https: //bitbucket.org/ianb/pip/src/tip/pip/download.py#cl -86

self.get_response()に渡されるURLはurllib2.Requestオブジェクトですが、
get_response()は、その上でurlsplit()を呼び出そうとします。 上記のエラーがスローされます。
ただし、ファイルはダウンロードされているようです。


Original Comment By: Ian Lewis

これは修正されたようです。HTTPS+基本認証の下にプライベートインデックスがあり、 --index-url https://user:[email protected]でのみ機能します。

誰かがこれを確認して問題を解決できますか?

このトピックにリンクされたプルリクエスト(https://github.com/pypa/pip/pull/786)を追加しました。

@brutasse確認できます。 これを閉じますか?

1.5.6にはまだ問題があります。

現在話し合っている問題を正確に確認できますか?

ごめん。 私のために働きます。 私の間違い:-D
2014年7月18日午前5時20分、「MattIversen」 [email protected]は次のように書いています。

現在話し合っている問題を正確に確認できますか?


このメールに直接返信するか、GitHubで表示してください
https://github.com/pypa/pip/issues/51#issuecomment-49406680

それでも必要なのは、URLにユーザー名とパスワードを入力することですか?

pip==6.0.8でサポートされていますか?

私はプライベートPyPIインデックスを使用し、次のようにインストールを実行します。
pip install <my_package> --cert=<required_for_some_reason> --extra-index-url https://username:[email protected]/simple/ --allow-all-external

その後、機能しますが、ユーザー名とパスワードをインタラクティブに要求します。 このスクリプトがCLIを使用してシェルの外部で実行された場合はそうではありません。

ここで説明されている問題にリンクされているかどうかを確認するか、別の問題を作成する必要があるかどうかを提案するか、解決策を指摘してください。

@vladignatyev私はあなたが言及したのと同じ問題に遭遇しました。それは、ユーザー/パスワードをインタラクティブに要求することです。 問題を、パスワードにurlエンコードが必要な記号を含めるように絞り込みました。 パスワードをURLエンコードしないと、URLを解析できません。 パスワードをURLエンコードする場合、認証を試みる前にpipがパスワードをURLデコードしていないと思います。

私はpip7.1.2でもこの問題を抱えています。 パスワードにurlエンコードが必要な記号があり、pipは認証に失敗し(401応答を取得)、ユーザー名/パスワードの入力をインタラクティブに要求します。 その後、ユーザー/パスをインタラクティブに入力すると、正常に機能します。 @bcbrownのように、パスワードをURLデコードしていないのではないかと

このできるだけ早くPIP8.1.2を修正してください

9.0.3を使用してこれに遭遇しました....これはまだ深刻な問題ですか?

URLからのユーザー名/パスワードの解析は、ポートが指定されている場合にのみ機能します。
(少なくともDebian 9、Python 2.7.13、pip 18.1では、他のシステムでもこの問題が発生しました)

これはユーザー名/パスワードを照会します: pip install -f https://user:[email protected]/pkgs requests
これは機能します: pip install -f https://user:[email protected]:443/pkgs requests

これはpip18.1で動作しますが、最新バージョン(19.1)では壊れています。18.1に戻した後に動作することを確認しました。

URLからのユーザー名/パスワードの解析は、ポートが指定されている場合にのみ機能します。
(少なくともDebian 9、Python 2.7.13、pip 18.1では、他のシステムでもこの問題が発生しました)

これはユーザー名/パスワードを照会します: pip install -f https://user:[email protected]/pkgs requests
これは機能します: pip install -f https://user:[email protected]:443/pkgs requests

@olt pip 19.1.1を使用しても同じ問題が発生し、提案どおりにポートを配置することで、なんとか機能させることができました。 かなりあいまいな回避策です。あなたの答えにもっと賛成できたらいいのにと思います。

このページは役に立ちましたか?
0 / 5 - 0 評価