为什么pip安装setuptools打包项目时不下载install_requires声明的依赖?
install_requires作用与依赖不生效问题解答
install_requires的具体作用
- 用于声明Python包正常运行所需的核心第三方依赖,以及对应的版本约束规则
- 当你通过pip安装对应包时,pip会自动读取包内的依赖声明,校验本地环境是否满足要求,不符合的话会自动下载安装适配版本的依赖包,无需用户手动逐个安装
- 可以避免因依赖版本不对导致的包运行异常问题
依赖不生效的成因
你遇到的问题核心原因是配置位置错误:install_requires是[options]段的配置项,你错误把它写在了[metadata]段下,setuptools打包时不会读取[metadata]段下的install_requires配置,导致打包生成的包没有携带依赖声明,pip安装时自然不会自动安装对应依赖。
修正后的配置示例
[metadata] name = totems_pycommon version = 1.0.0 #long_description = file: README.rst, CHANGELOG.rst, LICENSE.rst [options] include_package_data = True python_requires = >=3.6 packages = find: package_dir = =. # 依赖配置移动到[options]段下才会生效 install_requires= kafka==1.2.0 elasticsearch7==7.14.1 requests [options.packages.find] where = . #include = * exclude = *.test [options.package_data] * = *.ini
生效操作步骤
- 删除项目中历史打包生成的
build、dist、totems_pycommon.egg-info三个目录,避免旧缓存干扰 - 重新执行打包命令:
python setup.py sdist bdist_wheel - 安装新生成的包即可看到pip自动下载安装对应依赖
你之前安装时的现象参考截图:
内容的提问来源于stack exchange,提问作者Stven David
相关产品推荐
相关产品推荐

