diff --git a/dev/index.html b/dev/index.html index a3e2f8636b..4cb67a248a 100644 --- a/dev/index.html +++ b/dev/index.html @@ -984,8 +984,7 @@

Introduction#

-

PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards. But it is more than a package manager. It boosts your development workflow in various aspects. The most significant benefit is it installs and manages packages -in a similar way to npm that doesn't need to create a virtualenv at all!

+

PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards. But it is more than a package manager. It boosts your development workflow in various aspects.

Feature highlights#

diff --git a/dev/search/search_index.json b/dev/search/search_index.json index 2509fd0634..6c40591d7b 100644 --- a/dev/search/search_index.json +++ b/dev/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":""},{"location":"#introduction","title":"Introduction","text":"

PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards. But it is more than a package manager. It boosts your development workflow in various aspects. The most significant benefit is it installs and manages packages in a similar way to npm that doesn't need to create a virtualenv at all!

"},{"location":"#feature-highlights","title":"Feature highlights","text":""},{"location":"#installation","title":"Installation","text":"

PDM requires Python 3.8+ to be installed. It works on multiple platforms including Windows, Linux and macOS.

Note

You can still have your project working on lower Python versions, read how to do it here.

"},{"location":"#recommended-installation-method","title":"Recommended installation method","text":"

PDM requires python version 3.8 or higher.

Like Pip, PDM provides an installation script that will install PDM into an isolated environment.

Linux/MacWindows
curl -sSL https://pdm-project.org/install-pdm.py | python3 -\n
(Invoke-WebRequest -Uri https://pdm-project.org/install-pdm.py -UseBasicParsing).Content | py -\n

For security reasons, you should verify the checksum of install-pdm.py. It can be downloaded from install-pdm.py.sha256.

For example, on Linux/Mac:

curl -sSLO https://pdm-project.org/install-pdm.py\ncurl -sSL https://pdm-project.org/install-pdm.py.sha256 | shasum -a 256 -c -\n# Run the installer\npython3 install-pdm.py [options]\n

The installer will install PDM into the user site and the location depends on the system:

You can pass additional options to the script to control how PDM is installed:

usage: install-pdm.py [-h] [-v VERSION] [--prerelease] [--remove] [-p PATH] [-d DEP]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v VERSION, --version VERSION | envvar: PDM_VERSION\n                        Specify the version to be installed, or HEAD to install from the main branch\n  --prerelease | envvar: PDM_PRERELEASE    Allow prereleases to be installed\n  --remove | envvar: PDM_REMOVE            Remove the PDM installation\n  -p PATH, --path PATH | envvar: PDM_HOME  Specify the location to install PDM\n  -d DEP, --dep DEP | envvar: PDM_DEPS     Specify additional dependencies, can be given multiple times\n

You can either pass the options after the script or set the env var value.

"},{"location":"#other-installation-methods","title":"Other installation methods","text":"HomebrewScooppipxpipasdfinside project
brew install pdm\n
scoop bucket add frostming https://github.com/frostming/scoop-frostming.git\nscoop install pdm\n
pipx install pdm\n

Install the head version of GitHub repository. Make sure you have installed Git LFS on your system.

pipx install git+https://github.com/pdm-project/pdm.git@main#egg=pdm\n

To install PDM with all features:

pipx install pdm[all]\n

See also: https://pypa.github.io/pipx/

pip install --user pdm\n

Assuming you have asdf installed.

asdf plugin add pdm\nasdf local pdm latest\nasdf install pdm\n

By copying the Pyprojectx wrapper scripts to a project, you can install PDM as (npm-style) dev dependency inside that project. This allows different projects/branches to use different PDM versions.

To initialize a new or existing project, cd into the project folder and:

Linux/MacWindows
curl -LO https://github.com/pyprojectx/pyprojectx/releases/latest/download/wrappers.zip && unzip wrappers.zip && rm -f wrappers.zip\n./pw --init pdm\n
Invoke-WebRequest https://github.com/pyprojectx/pyprojectx/releases/latest/download/wrappers.zip -OutFile wrappers.zip; Expand-Archive -Path wrappers.zip -DestinationPath .; Remove-Item -Path wrappers.zip\n.\\pw --init pdm\n

When installing pdm with this method, you need to run all pdm commands through the pw wrapper:

Linux/Mac/Windows
./pw pdm install\n
"},{"location":"#update-the-pdm-version","title":"Update the PDM version","text":"
pdm self update\n
"},{"location":"#packaging-status","title":"Packaging Status","text":""},{"location":"#shell-completion","title":"Shell Completion","text":"

PDM supports generating completion scripts for Bash, Zsh, Fish or Powershell. Here are some common locations for each shell:

BashZshFishPowershell
pdm completion bash > /etc/bash_completion.d/pdm.bash-completion\n
# Make sure ~/.zfunc is added to fpath, before compinit.\npdm completion zsh > ~/.zfunc/_pdm\n

Oh-My-Zsh:

mkdir $ZSH_CUSTOM/plugins/pdm\npdm completion zsh > $ZSH_CUSTOM/plugins/pdm/_pdm\n

Then make sure pdm plugin is enabled in ~/.zshrc

pdm completion fish > ~/.config/fish/completions/pdm.fish\n
# Create a directory to store completion scripts\nmkdir $PROFILE\\..\\Completions\necho @'\nGet-ChildItem \"$PROFILE\\..\\Completions\\\" | ForEach-Object {\n    . $_.FullName\n}\n'@ | Out-File -Append -Encoding utf8 $PROFILE\n# Generate script\nSet-ExecutionPolicy Unrestricted -Scope CurrentUser\npdm completion powershell | Out-File -Encoding utf8 $PROFILE\\..\\Completions\\pdm_completion.ps1\n
"},{"location":"#virtualenv-and-pep-582","title":"Virtualenv and PEP 582","text":"

PDM offers experimental support for PEP 582 as an opt-in feature, in addition to virtualenv management. Although the Python Steering Council has rejected PEP 582, you can still test it out using PDM.

To learn more about the two modes, refer to the relevant chapters on Working with virtualenv and Working with PEP 582.

"},{"location":"#pdm-eco-system","title":"PDM Eco-system","text":"

Awesome PDM is a curated list of awesome PDM plugins and resources.

"},{"location":"#sponsors","title":"Sponsors","text":""},{"location":"dev/benchmark/","title":"Benchmark","text":"

This page has been removed, please visit https://lincolnloop.github.io/python-package-manager-shootout/ for a detailed benchmark report.

"},{"location":"dev/changelog/","title":"Changelog","text":"

Attention

Major and minor releases also include changes listed within prior beta releases.

"},{"location":"dev/changelog/#release-v2112-2024-01-02","title":"Release v2.11.2 (2024-01-02)","text":""},{"location":"dev/changelog/#bug-fixes","title":"Bug Fixes","text":""},{"location":"dev/changelog/#documentation","title":"Documentation","text":""},{"location":"dev/changelog/#release-v2111-2023-12-14","title":"Release v2.11.1 (2023-12-14)","text":""},{"location":"dev/changelog/#bug-fixes_1","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v2110-2023-12-14","title":"Release v2.11.0 (2023-12-14)","text":""},{"location":"dev/changelog/#features-improvements","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_2","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v2104-2023-11-24","title":"Release v2.10.4 (2023-11-24)","text":""},{"location":"dev/changelog/#bug-fixes_3","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v2103-2023-11-16","title":"Release v2.10.3 (2023-11-16)","text":""},{"location":"dev/changelog/#bug-fixes_4","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v2102-2023-11-16","title":"Release v2.10.2 (2023-11-16)","text":""},{"location":"dev/changelog/#features-improvements_1","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_5","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v2101-2023-11-07","title":"Release v2.10.1 (2023-11-07)","text":""},{"location":"dev/changelog/#bug-fixes_6","title":"Bug Fixes","text":""},{"location":"dev/changelog/#documentation_1","title":"Documentation","text":""},{"location":"dev/changelog/#release-v2100-2023-10-26","title":"Release v2.10.0 (2023-10-26)","text":""},{"location":"dev/changelog/#features-improvements_2","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_7","title":"Bug Fixes","text":""},{"location":"dev/changelog/#miscellany","title":"Miscellany","text":""},{"location":"dev/changelog/#release-v293-2023-09-25","title":"Release v2.9.3 (2023-09-25)","text":""},{"location":"dev/changelog/#bug-fixes_8","title":"Bug Fixes","text":""},{"location":"dev/changelog/#documentation_2","title":"Documentation","text":""},{"location":"dev/changelog/#release-v292-2023-09-12","title":"Release v2.9.2 (2023-09-12)","text":""},{"location":"dev/changelog/#features-improvements_3","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_9","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v291-2023-09-03","title":"Release v2.9.1 (2023-09-03)","text":""},{"location":"dev/changelog/#features-improvements_4","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_10","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v290-2023-08-31","title":"Release v2.9.0 (2023-08-31)","text":""},{"location":"dev/changelog/#features-improvements_5","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_11","title":"Bug Fixes","text":""},{"location":"dev/changelog/#removals-and-deprecations","title":"Removals and Deprecations","text":""},{"location":"dev/changelog/#release-v282-2023-07-31","title":"Release v2.8.2 (2023-07-31)","text":""},{"location":"dev/changelog/#features-improvements_6","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_12","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v281-2023-07-26","title":"Release v2.8.1 (2023-07-26)","text":""},{"location":"dev/changelog/#features-improvements_7","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_13","title":"Bug Fixes","text":""},{"location":"dev/changelog/#dependencies","title":"Dependencies","text":""},{"location":"dev/changelog/#release-v280-2023-07-15","title":"Release v2.8.0 (2023-07-15)","text":""},{"location":"dev/changelog/#features-improvements_8","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_14","title":"Bug Fixes","text":""},{"location":"dev/changelog/#documentation_3","title":"Documentation","text":""},{"location":"dev/changelog/#release-v280a2-2023-06-30","title":"Release v2.8.0a2 (2023-06-30)","text":""},{"location":"dev/changelog/#bug-fixes_15","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v280a1-2023-06-27","title":"Release v2.8.0a1 (2023-06-27)","text":""},{"location":"dev/changelog/#features-improvements_9","title":"Features & Improvements","text":""},{"location":"dev/changelog/#release-v280a0-2023-06-27","title":"Release v2.8.0a0 (2023-06-27)","text":""},{"location":"dev/changelog/#features-improvements_10","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_16","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v274-2023-06-13","title":"Release v2.7.4 (2023-06-13)","text":"

No significant changes.

"},{"location":"dev/changelog/#release-v273-2023-06-13","title":"Release v2.7.3 (2023-06-13)","text":""},{"location":"dev/changelog/#bug-fixes_17","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v272-2023-06-12","title":"Release v2.7.2 (2023-06-12)","text":""},{"location":"dev/changelog/#features-improvements_11","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_18","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v271-2023-06-06","title":"Release v2.7.1 (2023-06-06)","text":""},{"location":"dev/changelog/#features-improvements_12","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_19","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v270-2023-05-29","title":"Release v2.7.0 (2023-05-29)","text":""},{"location":"dev/changelog/#features-improvements_13","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_20","title":"Bug Fixes","text":""},{"location":"dev/changelog/#documentation_4","title":"Documentation","text":""},{"location":"dev/changelog/#release-v261-2023-05-10","title":"Release v2.6.1 (2023-05-10)","text":""},{"location":"dev/changelog/#bug-fixes_21","title":"Bug Fixes","text":""},{"location":"dev/changelog/#release-v260-2023-05-09","title":"Release v2.6.0 (2023-05-09)","text":""},{"location":"dev/changelog/#features-improvements_14","title":"Features & Improvements","text":""},{"location":"dev/changelog/#bug-fixes_22","title":"Bug Fixes","text":"