web-dev-qa-db-ja.com

Azure DevOpsからのpipインストールPython Artifactsフィードが機能しない

Azure DevOps Artifactsフィードからパッケージをインストールしようとすると、エラーが発生します。

Looking in indexes: https://pypi.org/simple, https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
ERROR: Could not find a version that satisfies the requirement as-api (from versions: none)
ERROR: No matching distribution found for as-api

pip install -vvvを使用すると機密情報が生成される可能性があるため、ここでは完全なログを提供できません。ログについて具体的な質問があれば遠慮なく質問してください。その間、次のような有望なメッセージが表示されます。

Found index url https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
Getting credentials from keyring for https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/

そしていくつかの問題のあるメッセージ?:

Status code 302 not in (200, 203, 300, 301)
Skipping link: not a file: ...
Given no hashes to check 0 links for project 'as-api': discarding no candidates

複製の詳細

virtualenv .venv
.\.venv\Scripts\activate
python -m pip install -U pip
pip install keyring artifacts-keyring
pip install as-api

この link は、パッケージを公開するためのパイプラインと、パッケージの推奨されるインストール方法を生成するために使用されました。私のアプローチは、オプション1とオプション2の両方を組み合わせたものです。php.iniファイルを使用して--index-urlartifacts-keyringパッケージを設定することに注意してください(--preを使用したインストールでは、バージョンとの違い)なので、実際には違いはありません。ただし、両方のオプションを個別に試しましたが、ブラウザが起動しないため、同じ結果が得られます。

システムの詳細:

  • OS:Windows 10
  • Python 2.7.17
pip list
Package           Version
----------------- ----------
artifacts-keyring 0.2.8rc0
certifi           2019.11.28
chardet           3.0.4
configparser      4.0.2
entrypoints       0.3
idna              2.8
keyring           18.0.1
pip               19.3.1
pywin32-ctypes    0.2.0
requests          2.22.0
setuptools        42.0.2
urllib3           1.25.7
wheel             0.33.6

フォルダー構造:

test
  |-- test.py
  |-- .venv
         |-- pip.ini
         |-- ... other virtualenv folders and files

pip.ini:

[global]
extra-index-url = https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/

さらなる分析

  • クリーンなラップトップを使用すると、実際には上記の再現の詳細で動作します。社内の他のコンピューターにも同じ問題があるため、セットアップの一部が認証と競合しています。

  • パイプライン(これを参照してください link )を使用してas-apiパッケージをインストールする場合、それは機能するので、これは認証の問題であると思いますが、どのドキュメントにも記載されていません。

  • https:// username:password @ ...を使用しても、ユーザー名とパスワードが間違っていても、認証エラーは発生しません。

  • 正しいユーザー名を使用するが、パスワードに記号が含まれていると、対話モードでユーザー名とパスワードを入力できます。ただし、これによりこのエラーが発生します。WARNING: 401 Error, Credentials not correct for https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/as-api/アーティファクトフィードの所有者は私であり、チームは[権限]タブに所有者として追加されています。

3
Nelson Yeung

修正

次のいずれかを実行します。

  • VSS_NUGET_EXTERNAL_FEED_ENDPOINTS環境変数を削除します(あまり役に立たないため、推奨されません)。

  • VSS_NUGET_EXTERNAL_FEED_ENDPOINTS環境変数にendpointを追加します。例えば。、

{"endpointCredentials": [{"endpoint":"https://pkgs.dev.Azure.com/company/_packaging/NuGetFeed/nuget/v3/index.json", ...},{"endpoint":"https://pkgs.dev.Azure.com/company/company_Software/_packaging/PyPI/pypi/simple/", ...}]}

これらのエンドポイントをセットアップするスクリプトがあるので、これは簡単な修正であることがわかります。

原因

artifacts-credprovider を使用して別のフィードを設定した場合(この場合は、別のエンドポイントを持つNuGetフィード)、VSS_NUGET_EXTERNAL_FEED_ENDPOINTS環境変数はそのフィードURLのみをキーendpointartifacts-keyring は、endpointが存在しない場合でもその環境変数を読み取り、認証の問題を引き起こします。 -vvvログは認証について何も通知せず、別の方法を使用して認証を試みません。

0
Nelson Yeung

回避策として:

インストールを行うために オプション2ドキュメント を使用しているようです。たまたま 同様の問題 が表示されます。これは、このエラーメッセージがpip.ini(windows)またはpip.conf(linux/mac)に関係している可能性があることを示しています。これらの構成の問題を回避するために別のアプローチを試してください。

pip install artifacts-keyring --preを実行してから実行できます

pip install packageName --index-url https://pkgs.dev.Azure.com/xxx/xxx/_packaging/xxx/pypi/simple/ -vvv --no-deps

コマンドpip install artifacts-keyring --preを実行すると、次のようになります。

enter image description here

ログインに合格すると、フィードに存在する場合に必要なパッケージを取得できます。

1
Lance Li-MSFT

私の問題は、artifacts-keyringをインストールしていなかったことです。その後、VS Codeがフィードを認証し、パッケージをインストールするのを確認できました。

また、次のコマンドを使用して、pipをアップグレードする必要がありました(19.2より大きい必要があります)。

python -m pip install --upgrade pip
0
Viktor