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-url
とartifacts-keyring
パッケージを設定することに注意してください(--pre
を使用したインストールでは、バージョンとの違い)なので、実際には違いはありません。ただし、両方のオプションを個別に試しましたが、ブラウザが起動しないため、同じ結果が得られます。
システムの詳細:
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/
アーティファクトフィードの所有者は私であり、チームは[権限]タブに所有者として追加されています。
次のいずれかを実行します。
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のみをキーendpoint
。 artifacts-keyring は、endpoint
が存在しない場合でもその環境変数を読み取り、認証の問題を引き起こします。 -vvv
ログは認証について何も通知せず、別の方法を使用して認証を試みません。
回避策として:
インストールを行うために オプション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
を実行すると、次のようになります。
ログインに合格すると、フィードに存在する場合に必要なパッケージを取得できます。
私の問題は、artifacts-keyringをインストールしていなかったことです。その後、VS Codeがフィードを認証し、パッケージをインストールするのを確認できました。
また、次のコマンドを使用して、pipをアップグレードする必要がありました(19.2より大きい必要があります)。
python -m pip install --upgrade pip