You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法构建Python包:执行python setup.py sdist不生成.tar文件求助

Python包构建失败:python setup.py sdist不生成.tar文件

问题描述

数月前可正常构建Python包,几乎未修改代码,现在执行python setup.py sdist命令时,无法生成新的包分发.tar文件。已安装twine和setuptools,且已更新所有依赖、确认setup.py位置正确。

文件结构:

  • 根目录下有setup.py、README.md
  • 存在rolimons子目录(包目录)

setup.py代码:

from setuptools import setup

with open("README.md", encoding="utf-8") as f:
    readme = f.read()

setup(
    name="rolimons",
    version="2.6.4",
    author="walker",
    description="Rolimons API Wrapper",
    long_description=readme,
    long_description_content_type="text/markdown",
    packages=['rolimons'],
    url="https://github.com/wa1ker38552/rolimons.py",
    install_requires=["requests", "bs4"],
    python_requires=">=3.7",
    py_modules=["rolimons"]
)

排查与解决方案

1. 核心冲突:packages与py_modules重复定义

你的setup.py同时指定了packages=['rolimons']和py_modules=["rolimons"],这两个参数功能冲突:

  • packages用于指定包含__init__.py的包目录(即你的rolimons文件夹)
  • py_modules用于指定单个独立的.py文件模块

由于你是按包目录结构组织代码,需要删除py_modules=["rolimons"]这一行,避免setuptools混淆打包逻辑。

2. 检查命令输出的错误信息

执行sdist时,不要忽略控制台输出的任何警告或错误。如果没有报错,但未生成新文件,可能是:

  • 根目录下已有dist/rolimons-2.6.4.tar.gz,sdist默认不会覆盖已有同版本文件。可以删除dist文件夹后重新执行命令,或者修改版本号后再构建。
  • rolimons包目录中缺少__init__.py文件,没有这个文件setuptools不会识别为合法Python包。

3. 升级工具并使用现代打包命令

即使你更新过包,建议再次执行强制升级:

pip install --upgrade setuptools wheel

然后使用官方推荐的现代打包命令替代旧的setup.py sdist:

python -m build --sdist

build模块比直接调用setup.py更可靠,能自动处理更多打包细节。

4. 验证包结构

确认rolimons目录下的文件结构正确,至少包含:

rolimons/
    __init__.py
    # 其他你的模块文件

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:10:26