Почему возникает ошибка при удалении версии проекта на PyPi?

Решил я удалить конкретную версию проекта на PyPi:

Нажал на параметры -> удалить.

Удалилось, даже письмо на почту пришло, но если загружаю исправленный проект на удалённую версию, то выдаёт следующую ошибку:

INFO Response from https://upload.pypi.org/legacy/: 400 This filename has already been used, use a different version. See https://pypi.org/help/#file-name-reuse for more information. INFO
<html>

<head>
  <title>400 This filename has already been used, use a different version. See https://pypi.org/help/#file-name-reuse for more information.</title>
</head>

<body>
  <h1>400 This filename has already been used, use a different version. See https://pypi.org/help/#file-name-reuse for more information.</h1>
  The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/> This filename has already been used, use a different version. See https://pypi.org/help/#file-name-reuse for more information.


</body>

</html>
ERROR HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/ This filename has already been used, use a different version. See https://pypi.org/help/#file-name-reuse for more information.

Что делать в этом случае?

  • Пробовал перезапустить VS Code - не помогло.

Ответы (1 шт):

Автор решения: insolor

Если совсем коротко - нельзя больше одного раза использовать один и тот же номер версии, используйте другой.

pypi.org не позволяет два раза загрузить файл с одним и тем же именем (см. ниже "Имя дистрибутива на PyPI состоит из комбинации имени проекта, номера версии и типа дистрибутива."), даже если старый файл удален (даже если проект был удален, и потом был создан новый с таким же именем).

В ошибке есть ссылка на справку: https://pypi.org/help/#file-name-reuse

Цитата:

Почему я получаю ошибку «Filename or contents already exists» («Имя файла или содержимое уже существуют») или «Filename has been previously used» («Имя файла использовалось ранее»)?

PyPI возвращает эти ошибки по одной из следующих причин:

  • Имя файла уже использовалось и файл существует
  • Имя файла уже использовалось, но файл больше не существует
  • Существует файл с точно таким же содержимым

PyPI не позволяет повторно использовать имя файла, даже если проект был удалён и создан заново.

Имя дистрибутива на PyPI состоит из комбинации имени проекта, номера версии и типа дистрибутива.

Это гарантирует, что данный дистрибутив для данного релиза для данного проекта всегда будет ссылаться на один и тот же файл, и в один прекрасный день он не может быть тайно изменен сопровождающим проекта или злоумышленником (его можно только удалить).

Чтобы избежать такой ситуации в большинстве случаев, вам нужно изменить номер версии на тот, который вы ранее не загружали в PyPI, пересобрать дистрибутив, а затем загрузить новый дистрибутив.

→ Ссылка