Windows环境下如何激活Python虚拟环境并通过pre-commit运行pdoc?
解决Windows下pre-commit配置pdoc的问题
你的问题根源在于pre-commit的每个hook都是独立进程,前一个激活虚拟环境的hook不会把环境传递给后面的pdoc hook,所以分开写两个hook完全没用。另外直接调用pdoc.exe时参数不识别,大概率是pre-commit自动追加了多余文件名参数导致的。给你两个可行的解决方案:
方案一:直接调用虚拟环境中的pdoc.exe(推荐)
不需要单独激活环境,直接指定虚拟环境里pdoc的完整路径,把命令写在同一个hook里:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - id: check-yaml - repo: local hooks: - id: pdoc-generate-docs name: Generate docs with pdoc language: system entry: .\env\Scripts\pdoc.exe ./file.py -o ./docs pass_filenames: false # 固定处理file.py,禁止pre-commit自动追加提交的文件名
- 注意:如果你的虚拟环境路径不是
./env,要改成实际路径 pass_filenames: false必须加,这是解决你之前"pdoc不识别额外参数"的关键——没有它的话,pre-commit会把提交的所有文件名追加到命令后,导致pdoc收到多余参数。
方案二:用批处理脚本封装命令
如果觉得命令太长,可以写一个generate_docs.bat脚本放在仓库根目录:
@echo off call .\env\Scripts\activate pdoc ./file.py -o ./docs
然后修改pre-commit配置:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - id: check-yaml - repo: local hooks: - id: pdoc-generate-docs name: Generate docs with pdoc language: system entry: ./generate_docs.bat pass_filenames: false
- 确保脚本路径正确,Windows下默认不需要额外设置执行权限
验证配置
写完配置后,先本地测试hook是否能正常运行:
pre-commit run pdoc-generate-docs --all-files
如果运行成功,后续提交代码就会自动触发这个hook生成文档了。
内容的提问来源于stack exchange,提问作者jordp1
相关产品推荐
相关产品推荐

