Help PyPI
Help PyPI
Join the official Python Developers Survey 2026 and have a chance to win
a prize Take the 2026 survey!
Common questions
Basics
My Account
Integrating
[Link] 1/21
14/03/2026, 15:01 Help · PyPI
Troubleshooting
I am having trouble using the PyPI website. Can you help me?
Why did my package or user registration get blocked?
Why am I getting a "Filename or contents already exists" or "Filename has been previously
used" error?
How do I request a new trove classifier?
Where can I report a bug or provide feedback about PyPI?
I'm having trouble setting up two factor authentication with an authentication application
(TOTP). Can you help me?
My project says it's in quarantine. What does that mean?
About
Basics
A "project" on PyPI is the name of a collection of releases and files, and information about them.
Projects on PyPI are made and shared by other members of the Python community so that you can
use them.
A "release" on PyPI is a specific version of a project. For example, the requests project has many
releases, like "requests 2.10" and "requests 1.2.1". A release consists of one or more "files".
A "file", also known as a "package", on PyPI is something that you can download and install.
Because of different hardware, operating systems, and file formats, a release may have several files
(packages), like an archive containing source code or a binary wheel.
[Link] 3/21
14/03/2026, 15:01 Help · PyPI
A yanked release is a release that is always ignored by an installer, unless it is the only release that
Join
matches the official
a version specifierPython Developers
(using either == or === Survey 2026
). See the userand have a chance
documentation to win
for more
information, including how to yank a aprize
[Link] the 2026 survey!
My account
The list of activities that require a verified email address is likely to grow over time.
This policy will allow us to enforce a key policy of PEP 541 regarding maintainer reachability. It
also reduces the viability of spam attacks to create many accounts in an automated fashion.
You can manage your account's email addresses in your account settings. This also allows for
sending a new confirmation email for users who signed up in the past, before we began enforcing
this policy.
Each time a user supplies a password — while registering, authenticating, or updating their
password — PyPI securely checks whether that password has appeared in public data breaches.
During each of these processes, PyPI generates a SHA-1 hash of the supplied password and uses
the first five (5) characters of the hash to check the Have I Been Pwned API and determine if the
password has been previously compromised. The plaintext password is never stored by PyPI or
submitted to the Have I Been Pwned API.
[Link] 4/21
14/03/2026, 15:01 Help · PyPI
PyPI will not allow such passwords to be used when setting a password at registration or updating
your Join the official Python Developers Survey 2026 and have a chance to win
password.
a prize Take the 2026 survey!
If you receive an error message saying that "This password appears in a breach or has been
compromised and cannot be used", you should change it all other places that you use it as soon as
possible.
If you have received this error while attempting to log in or upload to PyPI, then your password has
been reset, and you cannot log in to PyPI until you reset your password.
In PyPI's case, "something you know" is your username and password, while "something you own"
can be an application to generate a temporary code, or a security device (most commonly a USB
key).
During the web login process, users will be asked to provide their second method of identity
verification.
PyPI users can set up two-factor authentication using any authentication application that supports
the TOTP standard .
[Link] 5/21
14/03/2026, 15:01 Help · PyPI
TOTP authentication applications generate a regularly changing authentication code to use when
Join
logging theaccount.
into your official Python Developers Survey 2026 and have a chance to win
a prize Take the 2026 survey!
Because TOTP is an open standard, there are many applications that are compatible with your PyPI
account. Popular applications include:
Some password managers (e.g. 1Password ) can also generate authentication codes. For security
reasons, PyPI only allows you to set up one application per account.
The PyPI server and your application now share your PyPI secret key, allowing your application to
generate valid authentication codes for your PyPI account.
Note: If you lose your authentication application and can no longer log in, you may
permanently lose access to your account. You should generate and securely store recovery
codes to regain access in that event..
We recommend that all PyPI users set up at least two supported two-factor authentication
methods and provision recovery codes.
If you've lost access to all two factor methods for your account and do not have recovery
codes, you can request help with account recovery.
[Link] 6/21
14/03/2026, 15:01 Help · PyPI
Join the official Python Developers Survey 2026 and have a chance to win
How does two-factor authentication with a security device (e.g. USB key) work?
a prize Take the 2026 survey!
How do I set it up on PyPI?
A security device is a USB key or other device that generates a one-time password and sends that
password to the browser. This password is then used by PyPI to authenticate you as a user.
To use a browser that supports WebAuthn and PublicKeyCredential , as this is the standard
implemented by PyPI.
To be running JavaScript on your browser
To use a USB key that adheres to the FIDO U2F specification :
Popular keys include Yubikey , Google Titan and Thetis .
Note that some older Yubico USB keys do not follow the FIDO specification, and will
therefore not work with PyPI
1. Log in to your PyPI account, go to your account settings, and choose "Add 2FA with security
device (e.g. USB key)"
2. Give your key a name. This is necessary because it's possible to add more than one security
device to your account.
3. Click on the "Set up security device" button
4. Insert and touch your USB key, as instructed by your browser
Once complete, your USB key will be registered to your PyPI account and can be used during the
log in process.
Note: If you lose your security device and can no longer log in, you may permanently lose
access to your account. You should generate and securely store recovery codes to regain
access in that event..
We recommend that all PyPI users set up at least two supported two-factor authentication
methods and provision recovery codes.
If you've lost access to all two factor methods for your account and do not have recovery
codes, you can request help with account recovery.
What devices (other than a USB key) can I use as a security device?
[Link] 7/21
14/03/2026, 15:01 Help · PyPI
There is a growing ecosystem of devices that are FIDO compliant , and can therefore be used with
PyPI. Join the official Python Developers Survey 2026 and have a chance to win
a prize Take the 2026 survey!
Emerging solutions include biometric (facial and fingerprint) scanners and FIDO compatible credit
cards. There is also growing support for mobile phones to act as security devices .
As PyPI's two-factor implementation follows the WebAuthn standard , PyPI users will be able to
take advantage of any future developments in this field.
How does two-factor authentication with a recovery code work? How do I set it
up on PyPI?
If you lose access to your authentication application or security device, you can use these codes to
log in to PyPI.
Recovery codes are one time use. They are not a substitute for an authentication application or a
security device and should only be used for recovery. After using a recovery code to sign in, it
becomes inactive.
1. Log in to your PyPI account, go to your account settings, and choose "Generate recovery
codes"
2. Securely store the displayed recovery codes! Consider printing them out and storing them in a
safe location or saving them in a password manager.
If you lose access to your stored recovery codes or use all of them, you can get new ones by
selecting "Regenerate recovery codes" in your account settings.
You can create a token for an entire PyPI account, in which case, the token will work for all projects
associated with that account. Alternatively, you can limit a token's scope to a specific project.
When using an API token from a CI provider, we recommend scoping the token down to the
minimum necessary projects.
[Link] 8/21
14/03/2026, 15:01 Help · PyPI
If you are publishing to PyPI from a CI provider that supports Trusted Publishing, we strongly
Joinusing
recommend the official
TrustedPython Developers
Publishing instead. Survey 2026 and have a chance to win
a prize Take the 2026 survey!
To make an API token:
Where you edit or add these values will depend on your individual use case. For example, some
users may need to edit their .pypirc file , while others may need to update their CI configuration
file (e.g. .[Link] if you are using Travis ).
Advanced users may wish to inspect their token by decoding it with base64, and checking the
output against the unique identifier displayed on PyPI.
You'll only have to re-confirm your password if it's been more than an hour since you last confirmed
it.
We strongly recommend you only perform such actions on your personal, password-protected
computer.
Instead, you can create a new account with the desired username, add the new account as a
maintainer of all the projects your old account owns, and then delete the old account, which will
have the same effect.
[Link] 9/21
14/03/2026, 15:01 Help · PyPI
Integrating
Join the official Python Developers Survey 2026 and have a chance to win
a prize Take the 2026 survey!
Does PyPI have APIs I can use?
Yes, including RSS feeds of new packages and new releases. See the API reference.
Where can I see statistics about PyPI, downloads, and project/package usage?
You can analyze PyPI project/package metadata and download usage statistics via our public
dataset on Google BigQuery.
[Link] provides statistics for PyPI projects (example , API ) including GitHub stars and
forks, dependency tracking (in progress ), and other relevant factors .
For recent statistics on uptime and performance, see our status page .
What are the file hashes used for, and how can I verify them?
For each package hosted on PyPI, there are corresponding hashes for that file. These hashes can be
used to verify that the file you are downloading is the same one that the project maintainer
uploaded. This is especially useful if downloading packages from a mirror. The hashes can be
obtained from the project page in the "Download Files" section or from the JSON API. Here is an
example of generating the hashes:
import hashlib
with open("file-path-to-verify", "rb") as f:
file_contents = [Link]()
blake2b_hash = hashlib.blake2b(file_contents, digest_size=32).hexdigest()
sha256_hash = hashlib.sha256(file_contents).hexdigest()
print(f"BLAKE2b-256: {blake2b_hash}\nSHA256: {sha256_hash}")
[Link] 10/21
14/03/2026, 15:01 Help · PyPI
In practice, it would only be necessary to verify one of the hashes. It is not recommended to use the
Join
MD5 hash the official
because of knownPython
securityDevelopers Survey
issues with the 2026 andThis
MD5 algorithm. have a chance
hash to for
is provided win
backwards compatibility only. a prize Take the 2026 survey!
The project name conflicts with a Python Standard Library module from any major version
from 2.5 to present.
The project name is too similar to an existing project and may be confusable.
The project name has been explicitly prohibited by the PyPI administrators. For example, pip
install [Link] is a common typo for pip install -r [Link] ,
and should not surprise the user with a malicious package.
The project name has been registered by another user, but no releases have been [Link]
How do I claim an abandoned or previously registered project name?
Maintainer: Can upload releases for a package. Cannot add collaborators. Cannot delete files,
releases, or the project.
Owner: Can upload releases. Can add other collaborators. Can delete files, releases, or the entire
project.
[Link] 11/21
14/03/2026, 15:01 Help · PyPI
Join the official Python Developers Survey 2026 and have a chance to win
How do I become an owner/maintainer of a project on PyPI?
a prize Take the 2026 survey!
Only the current owners of a project have the ability to add new owners or maintainers. If you need
to request ownership, you should contact the current owner(s) of the project directly. Many project
owners provide their contact details in the 'Author' field of the 'Meta' details on the project page.
If the owner is unresponsive, see How do I claim an abandoned or previously registered project
name?
For example, readme = "[Link]" will render the description as Markdown, while readme =
"[Link]" will render it as reStructuredText
Refer to the Python Packaging User Guide for details on the available formats.
For how to check a description for validity, see also: Why am I getting "the description failed to
render" error?
See the user documentation for more information on requesting a file size limit increase.
How do I get a total project size limit exemption or increase for my project?
If you can't upload your project's release to PyPI because you're hitting the project size limit (10.0
GiB by default; individual projects may differ), first remove any unnecessary releases or individual
files to lower your overall project size.
If that is not possible, we can sometimes increase your limit. See the user documentation for more
information on requesting a project size limit increase.
Where does PyPI get its data on project vulnerabilities from, and how can I
correct it?
PyPI receives reports on vulnerabilities in the packages hosted on it from the Open Source
Vulnerabilities project , which in turn ingests vulnerabilities from the Python Packaging Advisory
[Link] 12/21
14/03/2026, 15:01 Help · PyPI
Database .
Join the official Python Developers Survey 2026 and have a chance to win
If you believe vulnerability data forayour
prizeproject is invalid or incorrect, file an issue with details.
Take the 2026 survey!
Troubleshooting
Note: All users submitting feedback, reporting issues or contributing to Warehouse are
expected to follow the PSF Code of Conduct .
You can proceed to file an issue on our tracker to request assistance with account recovery.
[Link] 13/21
14/03/2026, 15:01 Help · PyPI
Join
Note: All the official
users Python
submitting Developers
feedback, reportingSurvey 2026
issues or and have
contributing a chance to
to Warehouse arewin
expected to follow the PSF Code of Conduct
a prize .2026 survey!
Take the
1. Ensure that your API Token is valid and has not been revoked.
2. Ensure that your API Token is properly formatted and does not contain any trailing characters
such as newlines.
3. Ensure that the username you are using is __token__ .
Remember that PyPI and TestPyPI each require you to create an account, so your credentials may
be different.
If you're using Windows and trying to paste your token in the Command Prompt or PowerShell,
note that Ctrl-V and Shift+Insert won't work. Instead, you can use "Edit > Paste" from the window
menu, or enable "Use Ctrl+Shift+C/V as Copy/Paste" in "Properties". This is a known issue with
Python's getpass module.
Why am I getting "No matching distribution found" or "Could not fetch URL"
errors during pip install ?
Transport Layer Security, or TLS, is part of how we make sure connections between your computer
and PyPI are private and secure. It's a cryptographic protocol that's had several versions over time.
PyPI turned off support for TLS versions 1.0 and 1.1 in April 2018. Learn why on the PSF blog .
If you are having trouble with pip install and get a No matching distribution found or
Could not fetch URL error, try adding -v to the command to get more information:
If you see an error like There was a problem confirming the ssl certificate or tlsv1
alert protocol version or TLSV1_ALERT_PROTOCOL_VERSION , you need to be connecting to
PyPI with a newer TLS support library.
The specific steps you need to take will depend on your operating system version, where your
installation of Python originated ([Link], your OS vendor, or an intermediate distributor), and
the installed versions of Python, setuptools , and pip .
For help, go to the #pypa IRC channel on Libera , file an issue at pypa/packaging-
problems/issues , or discuss on the Discourse , including your OS and installation details and
the output of pip install --upgrade -vvv pip .
[Link] 14/21
14/03/2026, 15:01 Help · PyPI
Join
Note: All the official
users Python
submitting Developers
feedback, reportingSurvey 2026
issues or and have
contributing a chance to
to Warehouse arewin
expected to follow the PSF Code of Conduct
a prize .2026 survey!
Take the
I am having trouble using the PyPI website. Can you help me?
We take accessibility very seriously and want to make the website easy to use for everyone.
If you are experiencing an accessibility problem, report it to us on GitHub , so we can try to fix the
problem, for you and others.
Note: All users submitting feedback, reporting issues or contributing to Warehouse are
expected to follow the PSF Code of Conduct .
Why can't I manually upload files to PyPI, through the browser interface?
In a previous version of PyPI, it used to be possible for maintainers to upload releases to PyPI using
a form in the web browser. This feature was deprecated with the new version of PyPI – we instead
recommend that you use twine to upload your project to PyPI .
When the PyPI administrators are overwhelmed by spam or determine that there is some other
threat to PyPI, new user registration and/or new project registration may be disabled. Check our
status page for more details, as we'll likely have updated it with reasoning for the intervention.
PyPI does not allow for a filename to be reused, even once a project has been deleted and
[Link] 15/21
14/03/2026, 15:01 Help · PyPI
recreated.
Join the official Python Developers Survey 2026 and have a chance to win
A distribution filename on PyPI consists
a prizeof the combination of project name, version number, and
Take the 2026 survey!
distribution type.
This ensures that a given distribution for a given release for a given project will always resolve to
the same file, and cannot be surreptitiously changed one day by the projects maintainer or a
malicious party (it can only be removed).
To avoid this situation in most cases, you will need to change the version number to one that you
haven't previously uploaded to PyPI, rebuild the distribution, and then upload the new
distribution.
Note: All users submitting feedback, reporting issues or contributing to Warehouse are
expected to follow the PSF Code of Conduct .
If you are having an issue is with a specific package installed from PyPI, you should reach out to the
maintainers of that project directly instead.
Note: All users submitting feedback, reporting issues or contributing to Warehouse are
expected to follow the PSF Code of Conduct .
If you are having issues while setting up a TOTP device, it may be because your device time is out of
sync. Please check that the time on your device is set automatically, and try setting up the device
again.
[Link] 16/21
14/03/2026, 15:01 Help · PyPI
Join the official Python Developers Survey 2026 and have a chance to win
My project says it's in quarantine. What does that mean?
a prize Take the 2026 survey!
Projects may get placed in quarantine for any number of reasons, such as suspicion of malicious
activity, spam, or other violations of the Terms of Service or Acceptable Use Policy .
While in quarantine, the project is not installable by clients, and cannot be being modified by its
maintainers. PyPI Administrators will need to review this project before it can be restored.
If you believe your project has mistakenly been flagged for quarantine, contact PyPI via
security@[Link] with any details.
About
The PyPA is an independent group of developers whose goal is to improve and maintain many of
the core projects related to Python packaging.
The PackagingWG is a working group of the Python Software Foundation (PSF) whose goal is to
raise and disburse funds to support the ongoing improvement of Python packaging. Most recently
it secured an award from the Open Technology Fund whose funding is enabling developers to
improve Warehouse's security and accessibility.
PyPI is heavily cached and distributed via CDN thanks to our sponsor Fastly and thus is generally
available globally. However, the site is mostly maintained by volunteers, we do not provide any
specific Service Level Agreement, and as could be expected for a giant distributed system, things
can and sometimes do go wrong. See our status page for current and past outages and incidents.
[Link] 17/21
14/03/2026, 15:01 Help · PyPI
If you have high availability requirements for your package index, consider either a mirror or a
Join the official Python Developers Survey 2026 and have a chance to win
index.
private
a prize Take the 2026 survey!
Financial: We would deeply appreciate your donations to fund development and maintenance.
Development: Warehouse is open source, and we would love to see some new faces working on
the project. You do not need to be an experienced open-source developer to make a contribution –
in fact, we'd love to help you make your first open source pull request!
If you have skills in Python, Full-Text Search, HTML, SCSS, JavaScript, or SQLAlchemy then skim our
"Getting started" guide , then take a look at the issue tracker . We've created a 'Good first
issue' label – we recommend you start here.
Issues are grouped into milestones ; working on issues in the current milestone is a great way to
help push the project forward. If you're interested in working on a particular issue, leave a
comment, and we can guide you through the contribution process.
Stay updated: You can also follow the ongoing development of the project on the Python
packaging forum on Discourse .
Note: All users submitting feedback, reporting issues or contributing to Warehouse are
expected to follow the PSF Code of Conduct .
[Link] 18/21
14/03/2026, 15:01 Help · PyPI
Join the official Python Developers Survey 2026 and have a chance to win
What does the "beta feature" badge mean? What are Warehouse's current beta
a prize Take the 2026 survey!
features?
When Warehouse's maintainers are deploying new features, at first we mark them with a small
"beta feature" symbol to tell you: this should probably work fine, but it's new and less tested than
other site functionality.
Resources
Contact
The Python Packaging Authority (PyPA) is a working group who work together to improve Python
packaging. If you'd like to get in touch with a core packaging developer, use #pypa on IRC
(Libera) , or browse the online board .
[Link] 19/21
14/03/2026, 15:01 Help · PyPI
Developed and maintained by the Python community, for the Python community.
Donate today!
"PyPI", "Python Package Index", and the blocks logos are registered trademarks of the Python
Software Foundation .
English español français 日本語 português (Brasil) українська Ελληνικά Deutsch 中文 (简体)
中文 (繁體) русский עברית Esperanto 한국어
AWS Depot
Datadog Fastly Google
Cloud computing
and Security Continuous
Sponsor Monitoring Integration CDN Download Analytics
[Link] 20/21
14/03/2026, 15:01 Help · PyPI
Join the official Python Developers Survey 2026 and have a chance to win
Pingdoma prize Take the 2026 survey! StatusPage
Sentry
Monitoring Error logging Status page
[Link] 21/21