求助:Click模块Setuptools示例无法开箱即用,第二个示例运行失败
解决Click+Setuptools子目录脚本无法运行的问题
我之前也碰到过类似的情况,第一个示例能正常跑但子目录的第二个不行,主要是包结构和setup配置的细节没到位。下面给你一步步梳理解决方案:
先确认正确的项目结构
第二个示例的yourscript.py放在scripts子目录里,但Setuptools的find_packages()默认只会识别包含__init__.py的目录作为Python包,所以先给scripts目录加一个空的__init__.py文件,结构变成这样:
yourproject/ ├── setup.py └── scripts/ ├── __init__.py └── yourscript.py
修正setup.py的配置
你的setup.py可能存在参数不全或者entry_points路径不对的问题,这里给你补全并修正后的版本:
from setuptools import setup, find_packages setup( name='yourpackage', # 补全包名,随便取一个合法的名字即可 version='0.1.0', # 版本号可以根据需求自定义 packages=find_packages(), # 现在能识别到scripts包了 entry_points={ 'console_scripts': [ # 格式:终端命令名 = 包名.脚本文件名:被click装饰的函数名 'yourscript = scripts.yourscript:cli', ], }, )
安装并测试脚本
在项目根目录下执行开发模式安装(这样后续修改代码后不需要重新安装就能生效):
pip install -e .
安装完成后,直接在终端输入yourscript,就能看到输出Hello World!了。
常见坑点排查
- 如果还是报错,先检查
scripts目录有没有__init__.py,如果不想加这个文件,可以把packages=find_packages()改成packages=['scripts'],手动指定要包含的包。 - 确认entry_points里的路径完全对应:
scripts.yourscript就是指scripts/yourscript.py,cli是你用@click.command()装饰的那个函数名,别写错了。 - 安装后可以用
pip list查看yourpackage是否已经安装,或者用which yourscript(Linux/macOS)/where yourscript(Windows)确认脚本是否被正确生成。
内容的提问来源于stack exchange,提问作者xtian
相关产品推荐
相关产品推荐

