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,它会执行以下步骤来检查该名称是否已被保留:

  1. o 的两种情况(小写和大写,oO)都被替换为 0(与您的情况无关,因为没有 os 在你的包裹名称中)
  2. LI 两种情况都替换为 1(例如,exampleexamp1eexampie 相同)
  3. 删除所有 ._- 字符(例如,e-x-a-m-p-l-eexample 相同)
  4. 然后将结果小写并与已经存在的名称进行比较

由于我看不到与您给定的包名称的直接匹配,您确定 examplepkg 是也在您的 pyproject.tomlsetup.py 文件元数据中的名称吗?如果是,则可能是该名称的某些变体,其 non-normalized 形式在上述转换后与您的相匹配。