如何在Cookiecutter模板中使用Mypy?解决包名无效报错
当你的Cookiecutter模板目录名称(如{{cookiecutter.project_name}})不是合法Python包名,导致mypy .报错时,可以用以下几种方法适配:
指定具体检查路径
直接列出需要检查的文件或目录,避免让mypy尝试将整个目录识别为包:# 检查钩子目录和项目目录下的所有Python文件 mypy hooks/ {{cookiecutter.project_name}}/ # 如果钩子是单个文件,比如pre_gen_project.py mypy pre_gen_project.py {{cookiecutter.project_name}}/配置mypy排除规则
创建mypy.ini(或.mypy.ini)配置文件,指定仅检查目标路径,忽略其他无关内容:[mypy] # 只检查hooks目录和项目目录下的内容 exclude = ^(?!hooks|{{cookiecutter.project_name}}).*$之后直接运行
mypy .即可,mypy会跳过不符合包名规则的目录识别逻辑,直接检查目录内的文件。使用
--explicit-package-bases参数
让mypy基于显式的__init__.py文件识别包结构,而非自动推断目录名:mypy --explicit-package-bases .注意:如果项目目录下没有
__init__.py,需要先创建一个空的__init__.py文件(可保留在模板中供检查使用)。临时重命名目录(本地临时检查用)
把{{cookiecutter.project_name}}临时改成合法的Python包名(如temp_project),运行mypy检查后再改回原名称。这种方法适合临时本地验证,不适合自动化流程。
内容的提问来源于stack exchange,提问作者Alexis Drakopoulos
相关产品推荐
相关产品推荐

