Python第三方库oauth2clientz部署后pip仅安装oauth2clientz.egg-info文件夹问题排查
问题根源与解决方案
你的问题出在setup.py缺少关键配置,导致setuptools不知道要打包并安装你的实际代码文件,只生成了元数据文件夹。下面给你详细分析和修复步骤:
核心问题
你在setup.py里调用了find_packages()但没有把它的结果传给packages参数——这是告诉setuptools"我要打包哪些Python包"的核心配置。没有这一行,工具只会处理元数据,不会收集你的库代码。
修改后的setup.py
把你的setup.py更新成下面这样,重点添加packages=find_packages()和include_package_data=True:
from setuptools import setup, find_packages setup( name='oauth2clientz', version='0.0.1', description='oauth2clientzskproject', long_description='outh2client', long_description_content_type='text/plain', url='https://github.com/sukan/oauth2clientz', author='sukan', author_email='sukanpp@gmail.com', classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', ], keywords='oauth2clientz project', packages=find_packages(), # 必须添加:自动识别所有含__init__.py的包 include_package_data=True, # 配合Manifest.in,确保非代码文件被打包 )
配置解释
packages=find_packages():这个函数会自动扫描当前目录下所有包含__init__.py的子文件夹(也就是你创建的oauth2clientz子目录),把它们标记为要打包的Python包。你也可以手动指定packages=['oauth2clientz'],但自动扫描更适合后续扩展。include_package_data=True:启用这个参数后,setuptools会读取你写的Manifest.in规则,把里面指定的文件(比如License.txt)也打包进去,避免只安装代码文件漏掉许可证。
验证与重新部署
修改完成后,按以下步骤重新操作:
- 先清理之前生成的文件:删除
oauth2clientz.egg-info和dist文件夹 - 重新生成源码包:
python setup.py sdist - 解压
dist里的.tar.gz包,检查里面是否包含oauth2clientz子文件夹(以及里面的代码文件) - 确认没问题后,用twine重新上传:
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
这样再执行pip install oauth2clientz,就能看到实际的库文件被安装到Python的site-packages目录里了。
内容的提问来源于stack exchange,提问作者sukan
相关产品推荐
相关产品推荐

