D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
blackhat.pw
:
/
kunden
/
proc
/
self
/
root
/
usr
/
share
/
doc
/
python3-pip
/
html
/
development
/
Filename :
getting-started.html
back
Copy
<!doctype html> <html class="no-js" lang="en" data-content_root="../"> <head><meta charset="utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1"/> <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="search" title="Search" href="../search.html" /><link rel="copyright" title="Copyright" href="../copyright.html" /><link rel="next" title="Contributing" href="contributing.html" /><link rel="prev" title="Development" href="index.html" /> <!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 --> <title>Getting Started - pip documentation v25.1.1</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=ad9e2e31" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/tabs.css?v=4c969af8" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=4aa03575" /> <style> body { --color-code-background: #f8f8f8; --color-code-foreground: black; } @media not print { body[data-theme="dark"] { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } } } </style></head> <body> <script> document.body.dataset.theme = localStorage.getItem("theme") || "auto"; </script> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-toc" viewBox="0 0 24 24"> <title>Contents</title> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line> <line x1="3" y1="6" x2="21" y2="6"></line> <line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24"> <title>Light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24"> <title>Dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> </svg> </symbol> <symbol id="svg-sun-with-moon" viewBox="0 0 24 24"> <title>Auto light/dark, in light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/> <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/> <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/> <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/> <line x1="19" y1="14.05" x2="20.414" y2="15.464"/> <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/> <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/> <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/> <line x1="19" y1="5.05" x2="20.414" y2="3.636"/> <circle cx="14.5" cy="9.55" r="3.6"/> </svg> </symbol> <symbol id="svg-moon-with-sun" viewBox="0 0 24 24"> <title>Auto light/dark, in dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/> <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/> <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/> <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/> <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/> <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/> <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/> <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/> <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/> <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/> </svg> </symbol> <symbol id="svg-pencil" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code"> <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> <symbol id="svg-eye" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /> <path d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> </svg> <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> <label class="overlay sidebar-overlay" for="__navigation"> <div class="visually-hidden">Hide navigation sidebar</div> </label> <label class="overlay toc-overlay" for="__toc"> <div class="visually-hidden">Hide table of contents sidebar</div> </label> <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a> <div class="page"> <header class="mobile-header"> <div class="header-left"> <label class="nav-overlay-icon" for="__navigation"> <div class="visually-hidden">Toggle site navigation sidebar</div> <i class="icon"><svg><use href="#svg-menu"></use></svg></i> </label> </div> <div class="header-center"> <a href="../index.html"><div class="brand">pip documentation v25.1.1</div></a> </div> <div class="header-right"> <div class="theme-toggle-container theme-toggle-header"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-header-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> </header> <aside class="sidebar-drawer"> <div class="sidebar-container"> <div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html"> <span class="sidebar-brand-text">pip documentation v25.1.1</span> </a><form class="sidebar-search-container" method="get" action="../search.html" role="search"> <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> <input type="hidden" name="check_keywords" value="yes"> <input type="hidden" name="area" value="default"> </form> <div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> <ul> <li class="toctree-l1"><a class="reference internal" href="../getting-started.html">Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="../topics/index.html">Topic Guides</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle navigation of Topic Guides</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../topics/authentication.html">Authentication</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/caching.html">Caching</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/configuration.html">Configuration</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/dependency-resolution.html">Dependency Resolution</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/more-dependency-resolution.html">More on Dependency Resolution</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/https-certificates.html">HTTPS Certificates</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/local-project-installs.html">Local project installs</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/repeatable-installs.html">Repeatable Installs</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/secure-installs.html">Secure installs</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/vcs-support.html">VCS Support</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/python-option.html">Managing a different Python interpreter</a></li> <li class="toctree-l2"><a class="reference internal" href="../topics/workflow.html">Pip is not a workflow management tool</a></li> </ul> </li> <li class="toctree-l1 has-children"><a class="reference internal" href="../reference/index.html">Reference</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle navigation of Reference</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2 has-children"><a class="reference internal" href="../reference/build-system/index.html">Build System Interface</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><div class="visually-hidden">Toggle navigation of Build System Interface</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../reference/build-system/pyproject-toml.html"><code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="../reference/build-system/setup-py.html"><code class="docutils literal notranslate"><span class="pre">setup.py</span></code> (legacy)</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="../reference/requirement-specifiers.html">Requirement Specifiers</a></li> <li class="toctree-l2"><a class="reference internal" href="../reference/requirements-file-format.html">Requirements File Format</a></li> <li class="toctree-l2"><a class="reference internal" href="../reference/installation-report.html">Installation Report</a></li> <li class="toctree-l2"><a class="reference internal" href="../reference/inspect-report.html"><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">inspect</span></code> JSON output specification</a></li> </ul> </li> <li class="toctree-l1 has-children"><a class="reference internal" href="../cli/index.html">Commands</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><div class="visually-hidden">Toggle navigation of Commands</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../cli/pip.html">pip</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_install.html">pip install</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_uninstall.html">pip uninstall</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_inspect.html">pip inspect</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_list.html">pip list</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_show.html">pip show</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_freeze.html">pip freeze</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_check.html">pip check</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_lock.html">pip lock</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_download.html">pip download</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_wheel.html">pip wheel</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_hash.html">pip hash</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_search.html">pip search</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_index.html">pip index</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_cache.html">pip cache</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_config.html">pip config</a></li> <li class="toctree-l2"><a class="reference internal" href="../cli/pip_debug.html">pip debug</a></li> </ul> </li> </ul> <p class="caption" role="heading"><span class="caption-text">Project</span></p> <ul class="current"> <li class="toctree-l1 current has-children"><a class="reference internal" href="index.html">Development</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div class="visually-hidden">Toggle navigation of Development</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current"> <li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Getting Started</a></li> <li class="toctree-l2"><a class="reference internal" href="contributing.html">Contributing</a></li> <li class="toctree-l2"><a class="reference internal" href="ci.html">Continuous Integration</a></li> <li class="toctree-l2"><a class="reference internal" href="issue-triage.html">Issue Triage</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="architecture/index.html">Architecture of pip’s internals</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div class="visually-hidden">Toggle navigation of Architecture of pip’s internals</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="architecture/overview.html">Broad functionality overview</a></li> <li class="toctree-l3"><a class="reference internal" href="architecture/anatomy.html">Repository anatomy & directory structure</a></li> <li class="toctree-l3"><a class="reference internal" href="architecture/configuration-files.html">Configuration File Handling</a></li> <li class="toctree-l3"><a class="reference internal" href="architecture/package-finding.html">Finding and choosing files (<code class="docutils literal notranslate"><span class="pre">index</span></code> and <code class="docutils literal notranslate"><span class="pre">PackageFinder</span></code>)</a></li> <li class="toctree-l3"><a class="reference internal" href="architecture/command-line-interface.html">Command Line Interface</a></li> <li class="toctree-l3"><a class="reference internal" href="architecture/upgrade-options.html">Options that control the installation process</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="release-process.html">Release process</a></li> <li class="toctree-l2"><a class="reference internal" href="vendoring-policy.html">Vendoring Policy</a></li> </ul> </li> <li class="toctree-l1 has-children"><a class="reference internal" href="../ux-research-design/index.html">UX Research & Design</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><div class="visually-hidden">Toggle navigation of UX Research & Design</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../ux-research-design/contribute.html">How to Contribute</a></li> <li class="toctree-l2"><a class="reference internal" href="../ux-research-design/guidance.html">UX Guidance</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="../ux-research-design/research-results/index.html">UX Research Results</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" role="switch" type="checkbox"/><label for="toctree-checkbox-8"><div class="visually-hidden">Toggle navigation of UX Research Results</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/about-our-users.html">About pip’s Users</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/mental-models.html">How Users Understand pip</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/users-and-security.html">How pip users think about security</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/ci-cd.html">How pip is used in interactive environments (i.e. CI, CD)</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/personas.html">pip Personas</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/prioritizing-features.html">Prioritizing pip Features</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/override-conflicting-dependencies.html">Providing an override to install packages with conflicting dependencies</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/pip-force-reinstall.html">pip --force-reinstall</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/pip-search.html">pip search</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/pip-upgrade-conflict.html">pip Upgrade Conflict</a></li> <li class="toctree-l3"><a class="reference internal" href="../ux-research-design/research-results/improving-pips-documentation.html">Improving pip’s Documentation</a></li> </ul> </li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../news.html">Changelog</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md">Code of Conduct</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/pypa/pip">GitHub</a></li> </ul> </div> </div> </div> </div> </aside> <div class="main"> <div class="content"> <div class="article-container"> <a href="#" class="back-to-top muted-link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> </svg> <span>Back to top</span> </a> <div class="content-icon-container"> <div class="view-this-page"> <a class="muted-link" href="../_sources/development/getting-started.rst.txt" title="View this page"> <svg><use href="#svg-eye"></use></svg> <span class="visually-hidden">View this page</span> </a> </div> <div class="theme-toggle-container theme-toggle-content"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-content-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> <article role="main" id="furo-main-content"> <section id="getting-started"> <h1>Getting Started<a class="headerlink" href="#getting-started" title="Link to this heading">¶</a></h1> <p>We’re pleased that you are interested in working on pip.</p> <p>This document is meant to get you setup to work on pip and to act as a guide and reference to the development setup. If you face any issues during this process, please <a class="reference external" href="https://github.com/pypa/pip/issues/new?title=Trouble+with+pip+development+environment">open an issue</a> about it on the issue tracker.</p> <section id="get-the-source-code"> <h2>Get the source code<a class="headerlink" href="#get-the-source-code" title="Link to this heading">¶</a></h2> <p>To work on pip, you first need to get the source code of pip. The source code is available on <a class="reference external" href="https://github.com/pypa/pip">GitHub</a>.</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/pypa/pip <span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>pip </pre></div> </div> </section> <section id="development-environment"> <h2>Development Environment<a class="headerlink" href="#development-environment" title="Link to this heading">¶</a></h2> <p>pip is a command line application written in Python. For developing pip, you should <a class="reference external" href="https://realpython.com/installing-python/">install Python</a> on your computer.</p> <p>For developing pip, you need to install <a class="reference external" href="https://pypi.org/project/nox">nox</a>. The full development setup would then be:</p> <div class="tab-set docutils"> <input checked="True" class="tab-input" id="tab-set--0-input--1" name="tab-set--0" type="radio"><label class="tab-label" for="tab-set--0-input--1">Unix/macOS</label><div class="tab-content docutils"> <div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>.venv <span class="nb">source</span><span class="w"> </span>.venv/bin/activate python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>nox </pre></div> </div> </div> <input class="tab-input" id="tab-set--0-input--2" name="tab-set--0" type="radio"><label class="tab-label" for="tab-set--0-input--2">Windows</label><div class="tab-content docutils"> <div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>py<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>.venv .venv<span class="se">\S</span>cripts<span class="se">\a</span>ctivate py<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>nox </pre></div> </div> </div> </div> </section> <section id="running-pip-from-source-tree"> <h2>Running pip From Source Tree<a class="headerlink" href="#running-pip-from-source-tree" title="Link to this heading">¶</a></h2> <p>To run the pip executable from your source tree during development, install pip locally using editable installation (inside a virtualenv). You can then invoke your local source tree pip normally (be sure virtualenv is active).</p> <div class="tab-set docutils"> <input checked="True" class="tab-input" id="tab-set--1-input--1" name="tab-set--1" type="radio"><label class="tab-label" for="tab-set--1-input--1">Unix/macOS</label><div class="tab-content docutils"> <div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span>. python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>--version </pre></div> </div> </div> <input class="tab-input" id="tab-set--1-input--2" name="tab-set--1" type="radio"><label class="tab-label" for="tab-set--1-input--2">Windows</label><div class="tab-content docutils"> <div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>py<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span>. py<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>--version </pre></div> </div> </div> </div> </section> <section id="running-tests"> <h2>Running Tests<a class="headerlink" href="#running-tests" title="Link to this heading">¶</a></h2> <p>pip’s tests are written using the <a class="reference external" href="https://pypi.org/project/pytest">pytest</a> test framework and <a class="reference external" href="https://docs.python.org/3/library/unittest.mock.html#module-unittest.mock" title="(in Python v3.13)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest.mock</span></code></a>. <a class="reference external" href="https://pypi.org/project/nox">nox</a> is used to automate the setup and execution of pip’s tests.</p> <p>It is preferable to run the tests in parallel for a better experience during development, since the tests can take a long time to finish when run sequentially.</p> <p>To run tests:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>-n<span class="w"> </span>auto </pre></div> </div> <p>To run tests without parallelization, run:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10 </pre></div> </div> <p>The example above runs tests against Python 3.10. You can also use other versions like <code class="docutils literal notranslate"><span class="pre">3.9</span></code> and <code class="docutils literal notranslate"><span class="pre">pypy3</span></code>.</p> <p><code class="docutils literal notranslate"><span class="pre">nox</span></code> has been configured to forward any additional arguments it is given to <code class="docutils literal notranslate"><span class="pre">pytest</span></code>. This enables the use of pytest’s <a class="reference external" href="https://docs.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests">rich CLI</a>. As an example, you can select tests using the various ways that pytest provides:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="c1"># Using file name</span> <span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>tests/functional/test_install.py <span class="gp">$ </span><span class="c1"># Using markers</span> <span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>-m<span class="w"> </span>unit <span class="gp">$ </span><span class="c1"># Using keywords</span> <span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>-k<span class="w"> </span><span class="s2">"install and not wheel"</span> </pre></div> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>When running pip’s tests with OS distribution Python versions, be aware that some functional tests may fail due to potential patches introduced by the distribution. For all tests to pass consider:</p> <ul class="simple"> <li><p>Installing Python from <a class="reference external" href="https://www.python.org/downloads/">python.org</a> or compile from source</p></li> <li><p>Or, using <a class="reference external" href="https://github.com/pyenv/pyenv">pyenv</a> to assist with source compilation</p></li> </ul> </div> <p>Running pip’s entire test suite requires supported version control tools (subversion, bazaar, git, and mercurial) to be installed. If you are missing any of these VCS, those tests should be skipped automatically. You can also explicitly tell pytest to skip those tests:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>-k<span class="w"> </span><span class="s2">"not svn"</span> <span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>test-3.10<span class="w"> </span>--<span class="w"> </span>-k<span class="w"> </span><span class="s2">"not (svn or git)"</span> </pre></div> </div> </section> <section id="running-linters"> <h2>Running Linters<a class="headerlink" href="#running-linters" title="Link to this heading">¶</a></h2> <p>pip uses <a class="reference external" href="https://pypi.org/project/pre-commit">pre-commit</a> for managing linting of the codebase. <code class="docutils literal notranslate"><span class="pre">pre-commit</span></code> performs various checks on all files in pip and uses tools that help follow a consistent code style within the codebase.</p> <p>To use linters locally, run:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>lint </pre></div> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Avoid using <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">noqa</span></code> comments to suppress linter warnings - wherever possible, warnings should be fixed instead. <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">noqa</span></code> comments are reserved for rare cases where the recommended style causes severe readability problems.</p> </div> </section> <section id="running-pip-under-a-debugger"> <h2>Running pip under a debugger<a class="headerlink" href="#running-pip-under-a-debugger" title="Link to this heading">¶</a></h2> <p>In order to debug pip’s behavior, you can run it under a debugger like so:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>python<span class="w"> </span>-m<span class="w"> </span>pdb<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>--debug<span class="w"> </span>... </pre></div> </div> <p>Replace the <code class="docutils literal notranslate"><span class="pre">...</span></code> with arguments you’d like to run pip with. Give PDB the <code class="docutils literal notranslate"><span class="pre">c</span></code> (“continue”) command afterwards, to run the process.</p> <p>The <code class="docutils literal notranslate"><span class="pre">--debug</span></code> flag disables pip’s exception handler, which would normally catch all unhandled exceptions. With this flag, pip will let these exceptions propagate outside of its main subroutine, letting them get caught by the debugger. This way you’ll be able to debug an exception post-mortem via PDB.</p> </section> <section id="building-documentation"> <h2>Building Documentation<a class="headerlink" href="#building-documentation" title="Link to this heading">¶</a></h2> <p>pip’s documentation is built using <a class="reference external" href="https://pypi.org/project/Sphinx">Sphinx</a>. The documentation is written in reStructuredText.</p> <p>To build it locally, run:</p> <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>nox<span class="w"> </span>-s<span class="w"> </span>docs </pre></div> </div> <p>The built documentation can be found in the <code class="docutils literal notranslate"><span class="pre">docs/build</span></code> folder.</p> <p>For each Pull Request made the documentation is deployed following this link:</p> <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>https://pip--<PR-NUMBER>.org.readthedocs.build/en/<PR-NUMBER> </pre></div> </div> </section> <section id="what-next"> <h2>What Next?<a class="headerlink" href="#what-next" title="Link to this heading">¶</a></h2> <p>The following pages may be helpful for new contributors on where to look next in order to start contributing.</p> <ul class="simple"> <li><p>Some <a class="reference external" href="https://github.com/pypa/pip/labels/good%20first%20issue">good first issues</a> on GitHub for new contributors</p></li> <li><p>A deep dive into <a class="reference external" href="https://pip.pypa.io/en/latest/development/architecture/">pip’s architecture</a></p></li> <li><p>A guide on <a class="reference external" href="https://pip.pypa.io/en/latest/development/issue-triage/">triaging issues</a> for issue tracker</p></li> <li><p>Getting started with Git</p> <ul> <li><p><a class="reference external" href="https://guides.github.com/activities/hello-world/">Hello World for Git</a></p></li> <li><p><a class="reference external" href="https://guides.github.com/introduction/flow/">Understanding the GitHub flow</a></p></li> <li><p><a class="reference external" href="https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html">Start using Git on the command line</a></p></li> </ul> </li> </ul> </section> </section> </article> </div> <footer> <div class="related-pages"> <a class="next-page" href="contributing.html"> <div class="page-info"> <div class="context"> <span>Next</span> </div> <div class="title">Contributing</div> </div> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> </a> <a class="prev-page" href="index.html"> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> <div class="page-info"> <div class="context"> <span>Previous</span> </div> <div class="title">Development</div> </div> </a> </div> <div class="bottom-of-page"> <div class="left-details"> <div class="copyright"> <a href="../copyright.html">Copyright</a> © The pip developers </div> Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s <a href="https://github.com/pradyunsg/furo">Furo</a> </div> <div class="right-details"> </div> </div> </footer> </div> <aside class="toc-drawer"> <div class="toc-sticky toc-scroll"> <div class="toc-title-container"> <span class="toc-title"> On this page </span> </div> <div class="toc-tree-container"> <div class="toc-tree"> <ul> <li><a class="reference internal" href="#">Getting Started</a><ul> <li><a class="reference internal" href="#get-the-source-code">Get the source code</a></li> <li><a class="reference internal" href="#development-environment">Development Environment</a></li> <li><a class="reference internal" href="#running-pip-from-source-tree">Running pip From Source Tree</a></li> <li><a class="reference internal" href="#running-tests">Running Tests</a></li> <li><a class="reference internal" href="#running-linters">Running Linters</a></li> <li><a class="reference internal" href="#running-pip-under-a-debugger">Running pip under a debugger</a></li> <li><a class="reference internal" href="#building-documentation">Building Documentation</a></li> <li><a class="reference internal" href="#what-next">What Next?</a></li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div><script src="../_static/documentation_options.js?v=22103397"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script type="module" src="../_static/scripts/furo.js?v=d32f1409"></script> <script src="../_static/clipboard.min.js?v=66b4909c"></script> <script src="../_static/copybutton.js?v=80126f2a"></script> <script src="../_static/tabs.js?v=3ee01567"></script> </body> </html>