Twine не позволит мне зарегистрироваться или загрузить свой пакет: https://upload.pypi.org/legacy/ не так?
У меня есть пакет Python, который я пытаюсь зарегистрировать на PyPI. Я пытаюсь сделать это с помощью последней версии шпагата (1.9.1) и следую инструкциям на веб-странице шпагата.
Мой пакет правильно настроен локально. (setup.py
завершено и все такое.) Имя не было заявлено на PyPI. У меня есть аккаунт на PyPI. У меня нет ~/.pypirc
файл на моей машине. Я построил исходный дистрибутив и колесо.
> ll dist
total 64
-rw-r--r-- 1 billmcn staff 14184 Aug 1 13:35 mycroft-1.1.0.tar.gz
-rw-r--r-- 1 billmcn staff 15996 Aug 1 13:36 mycroft-1.1.0-py3-none-any.whl
Когда я пытаюсь зарегистрировать любой из этих пакетов, я получаю следующее сообщение об ошибке.
> twine register dist/mycroft-1.1.0.tar.gz
Registering package to https://upload.pypi.org/legacy/
Enter your username: billmcn
Enter your password:
Registering mycroft-1.1.0.tar.gz
HTTPError: 410 Client Error: Project pre-registration is no longer required or supported, so continue directly to uploading files. for url: https://upload.pypi.org/legacy/
Я получаю то же сообщение об ошибке при попытке зарегистрировать файл колеса. Это заставляет меня думать, что этот шаг регистрации не нужен. Однако, когда я пытаюсь загрузить свои пакеты, я вижу это.
> twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: billmcn
Enter your password:
Uploading mycroft-1.1.0-py3-none-any.whl
[================================] 23132/23132 - 00:00:00
HTTPError: 403 Client Error: You are not allowed to upload to 'mycroft'. for url: https://upload.pypi.org/legacy/
Это похоже на ошибку, которую вы получаете, если вам не удалось зарегистрировать ваши пакеты перед тем, как пытаться загрузить их. Я не вижу свой пакет, когда просматриваю его на сайте PyPI. Так что я застрял.
Это https://upload.pypi.org/legacy/ выглядит немного подозрительно для меня. Я должен указать какой-то другой URL?
Как мне зарегистрировать мой пакет?
Это похоже на загрузку пакета в pypi с использованием twine: Invalid URI. Проблема была в том, что у человека был инвалид url
Ключевое слово аргумент в их setup.py:setup
функция. Однако мой URL - это страница проекта github, https://github.com/wpm/mycroft, и он правильный.
Я вижу ту же проблему, если у меня есть следующее ~/.pypirc
файл:
[distutils]
index-servers =
pypi
pypitest
[pypi]
username=billmcn
password=********
[pypitest]
username=billmcn
password=********
Различные попытки вручную указать URL загрузки.
twine upload dist/* -r https://pypi.python.org/pypi
KeyError: Missing 'https://pypi.python.org/pypi' section from the configuration file
or not a complete URL in --repository.
Maybe you have a out-dated '~/.pypirc' format?
more info: https://docs.python.org/distutils/packageindex.html#pypirc
--help
текст говорит, что шпагат должен быть в состоянии выяснить, указываю ли я имя репозитория или URL, но давайте будем явными.
> twine upload dist/* --repository-url https://pypi.python.org/pypi
Uploading distributions to https://pypi.python.org/pypi
Note: you are uploading to the old upload URL. It's recommended to use the new URL "https://upload.pypi.org/legacy/" or to leave the URL unspecified and allow twine to choose.
Enter your username: billmcn
Enter your password:
Uploading mycroft-1.1.0-py3-none-any.whl
HTTPError: 410 Client Error: Gone (This API has been deprecated and removed from legacy PyPI in favor of using the APIs available in the new PyPI.org implementation of PyPI (located at https://pypi.org/). For more information about migrating your use of this API to PyPI.org, please see https://packaging.python.org/guides/migrating-to-pypi-org/#uploading. For more information about the sunsetting of this API, please see https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html) for url: https://pypi.python.org/pypi
Так что я должен использовать "новый" URL https://upload.pypi.org/legacy/?
> twine upload dist/* --repository-url https://upload.pypi.org/legacy/
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: billmcn
Enter your password:
Uploading mycroft-1.1.0-py3-none-any.whl
HTTPError: 403 Client Error: You are not allowed to upload to 'mycroft'. for url: https://upload.pypi.org/legacy/
Я в тупике. И я не могу найти никакого официального источника для текущего правильного URL.
И я хотел бы заставить работать шпагат, потому что документация Python рекомендует не использовать python setup.py register
а также python setup.py upload
,
Я все равно попробовал это и столкнулся с тем, что похоже на ту же проблему.
> python setup.py register
running register
running egg_info
writing mycroft.egg-info/PKG-INFO
writing dependency_links to mycroft.egg-info/dependency_links.txt
writing entry points to mycroft.egg-info/entry_points.txt
writing requirements to mycroft.egg-info/requires.txt
writing top-level names to mycroft.egg-info/top_level.txt
reading manifest file 'mycroft.egg-info/SOURCES.txt'
writing manifest file 'mycroft.egg-info/SOURCES.txt'
running check
We need to know who you are, so please choose either:
1. use your existing login,
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
Your selection [default 1]:
Username: billmcn
Password:
Registering mycroft to https://upload.pypi.org/legacy/
Server response (410): Project pre-registration is no longer required or supported, so continue directly to uploading files.
а также
> python setup.py sdist bdist_wheel upload
...builds the packages...
running upload
Password:
Submitting dist/mycroft-1.1.0.tar.gz to https://upload.pypi.org/legacy/
Upload failed (403): You are not allowed to upload to 'mycroft'.
error: Upload failed (403): You are not allowed to upload to 'mycroft'.
1 ответ
К сожалению для вас, даже если он кажется пустым и не имеет никакого кода, похоже, что в PyPI уже есть пакет "mycroft": https://pypi.python.org/pypi/mycroft/0.1.0. Вот почему API говорит вам, что вы не имеете права на это имя пакета.
Это может быть из более старой версии pypi, поскольку у нее даже нет выпуска по умолчанию. Вероятно, поэтому его нельзя найти с помощью инструмента исследования. Я смог найти его с помощью json api: https://pypi.python.org/pypi/mycroft/json
Я не знаю политики pypi по этому поводу, но, возможно, они могут удалить ее, так как даже GitHub выбрасывает 404. Пакет, вероятно, не будет принят для загрузки с новым API в любом случае.