You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法将Python模块发布至PyPI,请求技术排查

这个问题我之前帮不少开发者排查过,根源很明确:你的setup.py里的download_url参数配置错了,导致PyPI拒绝了你的上传请求。

为什么会报错?

错误提示里清楚写着'Easy-email-0.0.1.tar.gz' is an invalid value for Download-URL,而且附带的链接是https://test.pypi.org/legacy/——这说明你把PyPI的上传接口地址当成了项目的下载链接填进了download_url里,这完全不符合PyPI的元数据规范,PyPI自然会判定这个URL无效。

具体解决步骤

1. 修正setup.pydownload_url字段

download_url的作用是指定你的项目源码的外部下载地址(比如GitHub的release压缩包、GitLab的tag归档),绝对不能填PyPI的地址。举个正确的配置示例:

from setuptools import setup

setup(
    name="easy-email",
    version="0.0.1",
    # 正确的配置:指向GitHub仓库的v0.0.1版本归档
    download_url="https://github.com/your-username/easy-email/archive/refs/tags/v0.0.1.tar.gz",
    author="Your Name",
    description="A simple email utility package",
    # 其他必要参数...
)

如果你不需要自定义外部下载链接,直接删掉download_url这一行也完全没问题——PyPI会自动为你的包生成下载地址,不影响任何功能。

2. 清理旧构建产物并重新打包

之前生成的dist/easy-email-0.0.1.tar.gz已经包含了错误的元数据,必须清理后重新构建:

# 删除旧的构建文件夹和缓存
rm -rf dist build *.egg-info

# 推荐用官方推荐的build工具构建(先确保安装了build)
python -m pip install --upgrade build
python -m build

# 或者用传统的setup.py方式构建
# python setup.py sdist bdist_wheel

3. 重新上传到PyPI

用twine上传新生成的包文件即可:

twine upload dist/*

额外小提示

  • 包名尽量用全小写字母,虽然PyPI允许大小写混合,但小写更符合Python社区的惯例,也能避免一些潜在的命名冲突。
  • 如果你是上传到Test PyPI测试,记得确保twine配置的是Test PyPI的仓库地址,避免误传到正式环境。

内容的提问来源于stack exchange,提问作者Benjamin Sommer

火山引擎 最新活动