Configure the Project#
PDMのconfigコマンドはgit configと同じように動作しますが、--listは構成を表示するのに必要ありません。
現在の設定を表示します。
1 | |
設定を1つ取得します。:
1 | |
構成値を変更し、ホーム構成に保管します。:
1 | |
デフォルトでは、設定はグローバルに変更されます。このプロジェクトでのみ表示される設定にしたい場合は、--localフラグを追加します。:
1 | |
ローカル構成はすべて、プロジェクトのルートディレクトリの下のpdm.tomlに保存されます。
Configuration files#
構成ファイルは次の順序で検索されます。
<PROJECT_ROOT>/pdm.toml- プロジェクト構成<CONFIG_ROOT>/config.toml- ホーム構成<SITE_CONFIG_ROOT>/config.toml- サイト構成
ここで<CONFIG_ROOT>は以下のようになります:
- XDG Base Directory Specificationで定義されているLinuxでは
$XDG_CONFIG_HOME/pdm(ほとんどの場合~/.config/pdm) - Apple File System Basicsで定義されているmacOSでは
~/Library/Application Support/pdm - Known foldersで定義されているWindowsでは
%USERPROFILE%\AppData\Local\pdm
<SITE_CONFIG_ROOT>は次のようになります。:
- XDG Base Directory Specificationで定義されているLinuxでは
$XDG_CONFIG_DIRS/pdm(ほとんどの場合/etc/xdg/pdm) - Apple File System Basicsで定義されているmacOSでは
/Library/Application Support/pdm C:\ProgramData\pdm\pdm(WindowsではKnown foldersで定義)
-g/--globalオプションを使用すると、最初の項目は<CONFIG_ROOT>/global-project/pdm.tomlに置き換えられます。
使用可能なすべての設定項目は、Configuration Pageにあります。
Configure the Python finder#
デフォルトでは、PDMは次のソースからPythonインタプリタを検索します。:
venv: PDM virtualenvの場所path:PATH環境変数pyenv: Thepyenvのインストールルートrye: ryeのtoolchainのインストールルートasdf: asdfpythonのインストールルートwinreg:Windowsレジストリ
python.providersconfig keyを設定することで、それらのいくつかを選択解除したり、順序を変更したりできます。:
1 2 | |
Allow prereleases in resolution result#
デフォルトでは、pdmの依存性リゾルバは、依存性の指定されたバージョン範囲に対して安定したバージョンがない場合を除き、プレリリースを無視します。この動作は、[tool.pdm.resolution]テーブルでallow-prereleasesをtrueに設定することで変更できます。:
1 2 | |
Configure the package indexes#
PDMにパッケージの場所を指定するには、pyproject.tomlでソースを指定するか、pypi.*設定を使用します。
pyproject.tomlにソースを追加します:
1 2 3 4 | |
pdm configでデフォルトのインデックスを変更します。:
1 | |
pdm configでインデックスを追加します。:
1 | |
使用可能な構成オプションは次のとおりです。
url:インデックスのURLverify_ssl:(オプション)SSL証明書を検証するかどうか。デフォルトはtrueですusername:(オプション)インデックスのユーザ名password:(オプション)インデックスのパスワードtype:(オプション)indexまたはfind_links。デフォルトはindexです
About the source types
デフォルトでは、すべてのソースはpipの--index-urlや--extra-index-urlのようなPEP 503スタイルの"インデックス"ですが、タイプを直接検索するファイルやリンクを含むfind_linksに設定することもできます。2つのタイプの違いについては、this answerを参照してください。
たとえば、ローカルディレクトリをソースとして使用するには、次のように指定します。:
1 2 3 4 | |
これらの設定を次の順序で読み込んで、最終的な送信元リストを作成します。:
pypi.url(pypiがpyproject.tomlのどのソースのnameフィールドにも現れない場合)pyproject.toml内のソース- PDM構成の
pypi.<name>.url
pypi.ignore_stored_indexをtrueに設定すると、PDM構成からのすべての追加インデックスを無効にし、pyproject.tomlで指定されたインデックスのみを使用できます。
Disable the default PyPI index
デフォルトのPyPIインデックスを省略したい場合は、ソース名をPyPIに設定するだけで、そのソースがそれを置き換えます。
1 2 3 4 | |
Indexes in pyproject.toml or config
プロジェクトを使用する他の人とインデックスを共有したい場合は、pyproject.tomlに追加する必要があります。
例えば、一部のパッケージはプライベートインデックスにしか存在せず、誰かがインデックスを設定しなければインストールできません。
そうでなければ、他の人には見えないローカル設定に保存してください。
Respect the order of the sources#
デフォルトでは、すべてのソースが同等と見なされ、それらのパッケージはバージョンとwheelタグでソートされ、最も高いバージョンと最も一致するものが選択されます。
場合によっては、優先ソースからパッケージを戻し、前のソースから欠落している他のパッケージを検索する必要があります。PDMは、構成respect-source-orderを読み取ることでこれをサポートします。次に例を示します。
1 2 3 4 5 6 7 8 9 10 | |
パッケージは最初にprivateインデックスから検索され、一致するバージョンが見つからない場合にのみpypiインデックスから検索されます。
Specify index for individual packages#
tool.pdm.sourceテーブルのinclude_packagesおよびexclude_packagesconfigを使用して、パッケージを特定のソースにバインドできます。
1 2 3 4 5 | |
上記の設定では、fooまたはfoo-*に一致するパッケージはprivateインデックスからのみ検索され、bar-*に一致するパッケージはprivateを除くすべてのインデックスから検索されます。
include_packagesとexclude_packagesはどちらもオプションであり、globパターンのリストを受け入れます。include_packagesはパターンが一致した場合にのみ有効になります。
Store credentials with the index#
${ENV_VAR}変数展開を使用してURLに資格情報を指定できます。これらの変数は環境変数から読み込まれます。
1 2 3 | |
Configure HTTPS certificates#
HTTPS要求には、カスタムCAバンドルまたはクライアント証明書を使用できます。これは、インデックス(パッケージのダウンロード用)とリポジトリ(アップロード用)の両方に対して設定できます。:
1 2 | |
また、HTTPS証明書を検証するために、バンドルされた証明書の代わりにシステムトラストストアを使用することもできます。このアプローチでは、通常、追加の設定なしで企業のプロキシ証明書がサポートされます。
truststoreを使用するには、Python 3.10以降が必要で、truststoreをPDMと同じ環境にインストールする必要があります。
1 | |
さらに、環境変数REQUESTS_CA_BUNDLEおよびCURL_CA_BUNDLEで指定されたCA証明書も、設定されていれば使用されます。
Index configuration merging#
インデックスコンフィギュレーションは、コンフィギュレーションファイルの[[tool.pdm.source]]テーブルまたはpypi.<name>キーのnameフィールドとマージされます。
これにより、URLと認証情報を別々に保存して、ソースコントロールでシークレットが公開されないようにすることができます。たとえば、次のコンフィギュレーションがあるとします。:
1 2 3 | |
次のように、configファイルにクレデンシャルを保存できます。:
1 2 | |
PDMは、両方の場所から「プライベート」インデックスの構成を取得できます。
インデックスにユーザー名とパスワードが必要だが、環境変数や構成ファイルから見つからない場合、PDMはユーザー名とパスワードの入力を求めるプロンプトを表示します。または、keyringがインストールされている場合は、資格ストアとして使用されます。PDMは、インストールされているパッケージまたはCLIからkeyringを使用できます。
Central installation caches#
システム上の多くのプロジェクトでパッケージが必要な場合、各プロジェクトは独自のコピーを保持する必要がある。これは、特にデータサイエンスや機械学習プロジェクトでは、ディスク容量の無駄になる可能性がある。
PDMでは、同じホイールを中央のパッケージリポジトリにインストールし、そのインストールを別のプロジェクトにリンクすることで、_caching_installationsをサポートしています。これを有効にするには、次のコマンドを実行します。
1 | |
コマンドに--localオプションを追加することで、プロジェクトごとに有効にすることができます。
キャッシュは$(pdm config cache_dir)/packagesにあります。キャッシュの使用状況はpdm cache infoで確認できます。キャッシュされたインストールは自動的に管理されることに注意してください。どのプロジェクトにもリンクされていない場合は削除されます。キャッシュをディスクから手動で削除すると、システム上のいくつかのプロジェクトが壊れる可能性があります。
さらに、いくつかの異なるリンク方法がサポートされています。
symlink(デフォルト)、パッケージファイルへのシンボリックリンクの作成hardlink、キャッシュエントリのパッケージファイルへのハードリンクの作成
pdm config [--local] install.cache_method <method>を実行して、これらを切り替えることができます。
Note
キャッシュできるのは、いずれかのパッケージソースからインストールされたパッケージだけです。
Configure the repositories for upload#
pdm publishコマンドを使用すると、globalconfigファイル(<CONFIG_ROOT>/config.toml)からリポジトリシークレットが読み込まれます。configの内容は次のとおりです。:
1 2 3 4 5 6 7 8 9 | |
または、次の認証情報をenv変数で指定することもできます。:
1 2 3 4 | |
PEMエンコードされた認証局バンドル(ca_certs)は、サーバ証明書が標準のcertifiCAバンドルによって署名されていないローカル/カスタムPyPIリポジトリに使用できます。
Note
リポジトリは前のセクションのインデックスとは異なります。リポジトリは公開用であり、インデックスはロックと解決用です。リポジトリとインデックスは構成を共有しません。
Tip
pypiおよびtestpypiリポジトリにurlを設定する必要はありません。デフォルト値が入力されます。
ユーザー名、パスワード、および認証局バンドルは、それぞれ--username、--password、--ca-certsを介してpdm publishのコマンドラインから渡すことができます。
リポジトリの設定をコマンドラインから変更するには、pdm configコマンドを使用します。
1 2 3 4 5 | |
Password management with keyring#
キーリングが使用可能でサポートされている場合、パスワードは設定ファイルに書き込まれるのではなく、キーリングに保存され、キーリングから取得されます。これは、インデックスとアップロードリポジトリの両方をサポートします。サービス名は、インデックスの場合はpdm-pypi-<name>になり、リポジトリの場合はpdm-repository-<name>になります。
キーリングを有効にするには、keyringをPDMと同じ環境にインストールするか、グローバルにインストールします。PDM環境にキーリングを追加するには、次の手順に従います。:
1 | |
または、キーリングのコピーをグローバルにインストールした場合は、PDMで検出できるように、CLIがPATHenv varに公開されていることを確認します。:
1 | |
Password management with keyring for Azure Artifacts#
Azureアーティファクトに対して認証を試みる場合、これは認証にADグループを使用することで実現できる:pdm self add keyring artifacts-keyringartifacts-keyringが認証に使用されることを保証する。
次に、アーティファクトのURLをpyproject.tomlに追加します。
1 2 3 | |
Exclude specific packages and their dependencies from the lock file#
Added in version 2.12.0
特定のパッケージをロックされたファイルに含めたくない場合もあります。これは、それらがどのコードでも使用されないことが確実であるためです。この場合、依存関係の解決中に、それらとそれらの依存関係を完全にスキップできます。
1 2 | |
この設定では、requestsはロックファイル内でロックされず、urllib3やidnaなどの依存関係も、他のパッケージに依存していなければ解決結果に表示されません。インストーラもそれらを取得できません。
Passing constant arguments to every pdm invocation#
Added in version 2.7.0
tool.pdm.options構成によって、個々のpdmコマンドに渡す追加オプションを追加できます。
1 2 3 4 | |
pdm add requests is equivalent to pdm add --no-isolation --no-self requests.
これらのオプションは、コマンド名の直後に追加されます。たとえば、上記の設定に基づくと、pdm add requestsはpdm add --no-isolation --no-self requestsと同じです。
Ignore package warnings#
Added in version 2.10.0
依存関係を解決するときに、次のような警告が表示されることがあります。:
1 2 3 4 5 | |
これは、パッケージのサポートされているPythonバージョンの範囲が、pyproject.tomlで指定されたrequires-python値をカバーしていないためです。
次の設定を追加することで、パッケージごとにこれらの警告を無視できます。:
1 2 | |
各項目は、パッケージ名と一致するglobパターンで、大文字と小文字は区別されません。