无法构建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
相关产品推荐
相关产品推荐

