PyPI:名称与现有项目过于相似

4

当上传到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.

指的是哪个现有项目?如何确定它所说的是哪个现有项目?


1
在这种情况下,我猜想它可能是其中之一,但我不知道如何找出任何被拒绝的名称与哪个特定的现有项目发生冲突。 - user2357112
@user2357112supportsMonica 不,根据名称规范化,它们都不是碰撞。 - platypus
1个回答

8
没有直接的方法可以知道哪个具体的软件包导致名称冲突,但以下提示可能会帮助您进一步搜索。首先,您可以在https://github.com/pypa/warehouse/找到pypi源代码(称为仓库)。使用您提供的错误消息,您可以发现失败的检查是由名为ultranormalize_name的数据库函数引起的。现在,在代码库中搜索该名称会引导您到此迁移脚本,在其中创建了似乎这个函数,该函数执行以下步骤以检查是否已经保留名称:1.用0替换o的两种情况(小写和大写,o和O)(对于您的情况无关紧要,因为包名称中没有o);2.将L和I的两种情况替换为1(例如,example与examp1e和exampie相同);3.删除所有。、_和-字符(例如,e-x-a-m-p-l-e与example相同);4.然后将结果转换为小写并与已经存在的名称进行比较。由于我无法直接找到您给出的软件包名称匹配项,您确定examplepkg是在您的pyproject.tomlsetup.py文件元数据中也有的名称吗?如果是,则可能存在该名称的某个变体,其非规范化形式在上述转换之后与您的名称匹配。

2
也许是 example-pkg。如果400响应能说明冲突的位置就太好了。 - platypus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接