Reputation: 1275
I've uploaded my Python package to PyPI. But now I made new version of my package and need to upload it. I tried to make same progress which I did when upload the package first time but I got the error below:
HTTPError: 400 Client Error: File already exists. See https://pypi.org/help/#file-name-reuse for url: https://upload.pypi.org/legacy
Now, how to upload new version without any error?!
Upvotes: 81
Views: 38161
Reputation: 91
just delete the dist file if you want to reuse the same version and run below commands py -m build py -m twine upload --repository testpypi dist/* If your are using testpypi repo
It is working for me .
Upvotes: -1
Reputation: 1
I got the same error below:
HTTPError: 400 Bad Request from https://test.pypi.org/legacy/ File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.
When I tried to upload a package to TestPyPI with the command below:
twine upload --repository testpypi dist/*
So, I changed version
from "0.0.1"
to "0.0.2"
or name
from "example_package_superkai"
to "example_package_hyperkai"
in pyproject.toml
as shown below, then I removed dist
folder:
# "pyproject.toml"
...
[project]
...
# version = "0.0.1"
version = "0.0.2"
...
Or:
# "pyproject.toml"
...
[project]
# name = "example_package_superkai"
name = "example_package_hyperkai"
...
Then, I ran the command below:
python -m build
Finally, I could upload a package to TestPyPI
with the command below:
twine upload --repository testpypi dist/*
Upvotes: 0
Reputation: 111
if you have an old dist directory, delete it before running
python setup.py bdist_wheel
reason: It contains old version files, which causes problems while uploading to PyPI using twine
Upvotes: 0
Reputation: 2421
Another way that nobody mentioned is to provide an explicit filename:
twine upload --repository testpypi --skip-existing dist/myProject-0.1.9-py3-none-any.whl
This has advantages compared to the other proposed solutions, and precisely:
dist
folder, included previously uploaded versions. It's ok if you move out the old versions, but I am not sure about possible implications.--skip-existing
option solves the above problem, but all files are still processed, so it takes time.I am sure there are more efficient solutions, but this is simple enough for me.
Upvotes: 2
Reputation: 49
The error seems to stem from the command:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
reusing the previous package version.
To fix this, try this:
twine upload --skip-existing --repository-url https://test.pypi.org/legacy/
dist/*
Upvotes: 4
Reputation: 21520
PyPI does not allow for the reuse of distribution filenames (project name + version number + 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).
You will need to change the version number to one that you haven't previously uploaded to PyPI.
You didn't mention how you're uploading the distribution, but if you're using twine
, it's also possible you're attempting to re-upload a previously uploaded distribution. To resolve this, you can do:
$ twine upload --skip-existing dist/*
Upvotes: 147
Reputation: 25100
Make sure your dist directory is empty before running
python setup.py sdist
Upvotes: 3
Reputation: 1374
Can get that error for following reasons:
setup.py
Solution:
setup.py
. python setup.py bdist_wheel
.twine upload --skip-existing dist/*
As mentioned by @dustin, dist file of same name cannot be uploaded again.
Upvotes: 19