PyPI:名称与现有项目太相似
PyPI: The name is too similar to an existing project
上传到PyPI时出现错误:
$ twine upload -r test dist/examplepkg-1.0.tar.gz
Uploading distributions to https://test.pypi.org/legacy/
Uploading examplepkg-1.0.tar.gz
Error during upload. Retry with the --verbose option for more details.
HTTPError: 400 Bad Request from https://test.pypi.org/legacy/
The name 'examplepkg' is too similar to an existing project. See https://test.pypi.org/help/#project-name for more information.
哪个现有项目?您如何找出它所谈论的现有项目?
没有直接的方法可以知道是哪个包导致了名称冲突,但这里有一些提示可以帮助您进一步搜索。
首先,你可以在https://github.com/pypa/warehouse/找到pypi(称为仓库)的源代码。
根据您给出的错误信息,您可以发现检查失败是由一个名为 ultranormalize_name
的数据库函数引起的。
现在,在代码库中搜索该名称会将您带到 this migration script where the function seems to be created,它会执行以下步骤来检查该名称是否已被保留:
o
的两种情况(小写和大写,o
和 O
)都被替换为 0
(与您的情况无关,因为没有 o
s 在你的包裹名称中)
-
L
和 I
两种情况都替换为 1
(例如,example
与 examp1e
和 exampie
相同)
- 删除所有
.
、_
和 -
字符(例如,e-x-a-m-p-l-e
与 example
相同)
- 然后将结果小写并与已经存在的名称进行比较
由于我看不到与您给定的包名称的直接匹配,您确定 examplepkg
是也在您的 pyproject.toml
或 setup.py
文件元数据中的名称吗?如果是,则可能是该名称的某些变体,其 non-normalized 形式在上述转换后与您的相匹配。
上传到PyPI时出现错误:
$ twine upload -r test dist/examplepkg-1.0.tar.gz
Uploading distributions to https://test.pypi.org/legacy/
Uploading examplepkg-1.0.tar.gz
Error during upload. Retry with the --verbose option for more details.
HTTPError: 400 Bad Request from https://test.pypi.org/legacy/
The name 'examplepkg' is too similar to an existing project. See https://test.pypi.org/help/#project-name for more information.
哪个现有项目?您如何找出它所谈论的现有项目?
没有直接的方法可以知道是哪个包导致了名称冲突,但这里有一些提示可以帮助您进一步搜索。
首先,你可以在https://github.com/pypa/warehouse/找到pypi(称为仓库)的源代码。
根据您给出的错误信息,您可以发现检查失败是由一个名为 ultranormalize_name
的数据库函数引起的。
现在,在代码库中搜索该名称会将您带到 this migration script where the function seems to be created,它会执行以下步骤来检查该名称是否已被保留:
o
的两种情况(小写和大写,o
和O
)都被替换为0
(与您的情况无关,因为没有o
s 在你的包裹名称中)-
L
和I
两种情况都替换为1
(例如,example
与examp1e
和exampie
相同) - 删除所有
.
、_
和-
字符(例如,e-x-a-m-p-l-e
与example
相同) - 然后将结果小写并与已经存在的名称进行比较
由于我看不到与您给定的包名称的直接匹配,您确定 examplepkg
是也在您的 pyproject.toml
或 setup.py
文件元数据中的名称吗?如果是,则可能是该名称的某些变体,其 non-normalized 形式在上述转换后与您的相匹配。