开发工具CLI【免费下载链接】pipreqspipreqs - Generate pip requirements.txt file based on imports of any project. Looking for maintainers to move this project forward.项目地址https://gitcode.com/gh_mirrors/pi/pipreqs点击查看免费下载本篇指南以仓库根目录的 CONTRIBUTING.rst 为主体系统讲解如何为 pipreqs一款基于项目 import 语句自动生成requirements.txt的工具贡献代码包括报告 Bug、实现特性、撰写文档、搭建 Poetry 本地开发环境、运行 flake8 / unittest / tox 质量检查以及最终提交 Pull Request 的完整流程。读完本文你将掌握在 pipreqs 仓库中安全改代码、验证改动并顺利通过评审的实战方法同时能对照仓库源码与测试用例理解改动背后的行为约束。一、贡献的多种方式不止写代码pipreqs 欢迎一切形式的贡献且每一次贡献都会被记入功劳credit。根据 CONTRIBUTING.rst你可以在五个方向上参与1. 报告 BugReport Bugs在项目 issue 区提交 Bug 报告时务必附带以下信息帮助维护者快速定位你的操作系统名称与版本本地环境中有助于排查问题的任何细节如 Python 版本、是否使用虚拟环境、PyPI 镜像等可复现 Bug 的详细操作步骤越具体越好。2. 修复 BugFix Bugs浏览 issue 列表中标记为bug的问题任何带该标签的问题都欢迎任何人认领并实现修复。3. 实现新特性Implement Features浏览 issue 列表中标记为feature的需求任何带该标签的需求同样对所有人开放。仓库描述中Looking for maintainers to move this project forward也表明项目正积极寻求长期维护者接手推进。4. 撰写文档Write Documentationpipreqs 始终需要更多文档方向包括官方 pipreqs 文档即仓库docs/目录下的 Sphinx 文档如 docs/index.rst源码 docstring例如 pipreqs/pipreqs.py 中每个函数头部的Args/Returns说明互联网上的博客文章与技术分享。值得留意的是文档是 Sphinx 构建体系的一部分docs/contributing.rst 正是通过.. include:: ../CONTRIBUTING.rst将仓库根目录的 CONTRIBUTING.rst 直接包含进官方文档因此你在根目录写的这份文档会同步出现在官方文档站中docs/conf.py 启用了sphinx.ext.autodoc与sphinx.ext.viewcodedocstring 质量会直接影响 API 文档的可读性。5. 提交反馈Submit Feedback提出新特性建议时请遵循三条原则详细说明该特性在设计中应如何工作尽量缩小特性范围使其更易实现记住这是一个志愿者驱动的项目贡献永远受欢迎。二、本地开发环境搭建Get Started1. Fork 并克隆仓库先在托管平台 Forkpipreqs仓库再将你的 fork 克隆到本地$ git clone 你的 fork 地址 $ cd pipreqs/克隆完成后仓库根目录应包含 pipreqs/pipreqs.py、pipreqs/stdlib、pipreqs/mapping、tests/test_pipreqs.py、pyproject.toml、tox.ini 等核心文件。2. 使用 Poetry 安装开发依赖pipreqs 使用 Poetry 管理依赖。请先参考 Poetry 官方文档在本地安装 Poetry然后执行$ poetry install --with dev--with dev会额外安装 pyproject.toml 中声明的开发依赖组包括flake86.1.0代码风格检查tox4.11.3跨 Python 版本测试矩阵coverage7.3.2测试覆盖率sphinx7.2.6仅 Python 3.9本地构建官方文档。同时项目requires-python约束为3.9, 3.14运行时依赖为yarg0.1.9、docopt0.6.2、nbconvert7.11.0、ipython8.12.3后两者用于 Jupyter Notebook 扫描见下文。CLI 入口在 pyproject.toml 的[project.scripts]中定义为pipreqs pipreqs.pipreqs:main。3. 创建功能分支$ git checkout -b name-of-your-bugfix-or-feature建议分支名体现改动意图例如fix-notebook-encoding或add-ignore-glob。4. 本地修改现在可以自由修改代码。改动核心逻辑时请先阅读 pipreqs/pipreqs.py共 600 余行、使用docopt解析命令行参数的单文件实现了解现有调用链main()→init(args)→get_all_imports()AST 解析 排除标准库与本地包→get_pkg_names()经mapping映射为 PyPI 包名→ 本地/PyPI 版本解析 → 写出requirements.txt。5. 通过质量检查flake8 单元测试 tox改动完成后依次运行以下三组命令$ poetry run flake8 pipreqs tests $ poetry run python -m unittest discover $ poetry run toxflake8对pipreqs与tests目录做风格检查。tox.ini 中配置了max-line-length 120并排除tests/_data/、tests/_data_clean/、tests/_data_duplicated_deps/、tests/_data_ignore/、tests/_invalid_data/等测试夹具目录这些目录故意包含非常规代码用于验证工具行为。unittestpython -m unittest discover会运行仓库根目录下的全部单元测试实际执行的是 tests/test_pipreqs.py 中约 40 个用例详见下文第三节。tox在多个 Python 版本上重复执行单元测试。tox.ini的envlist为py39, py310, py311, py312, py313, pypy3, flake8其中 flake8 是独立的 lint 环境。要在本地完整跑通全部版本需要预先安装这些 Python 版本官方推荐使用pyenv或asdf管理多版本解释器。三、仓库源码与测试体系改动背后的行为约束要做出通过评审的改动理解现有测试覆盖是前提。tests/test_pipreqs.py 用unittest.mock与真实样例目录tests/_data/、tests/_data_clean/、tests/_data_ignore/、tests/_data_duplicated_deps/、tests/_data_notebook/、tests/_invalid_data/、tests/_data_pyw/验证了以下关键行为测试用例验证的行为test_get_all_imports从_data/test.py正确提取 15 个第三方 import且排除time、logging、curses、__future__、django、models标准库 / 本地模块不进入结果test_deduplicate_dependencies重复依赖去重_data_duplicated_deps/db.py最终只产生一个pymongotest_invalid_python/test_ignore_errors无效 Python 文件默认抛SyntaxError开启ignore_errorsTrue后跳过test_ignored_directory--ignore .ignored_dir,.ignore_second生效click、getpass不再进入 requirementstest_dynamic_version_*--modeno-pin输出裸包名、--modegt使用、--modecompat使用~test_clean/test_clean_with_imports_to_clean--clean删除未被 import 的模块如sqlalchemytest_output_requirements--print输出的内容与写入文件的内容完全一致test_import_notebooks/test_ipynb_2_py/test_invalid_notebook--scan-notebooks下.ipynb经PythonExporter转换后与对应.py提取出的 import 一致test_init_overwrite已存在的requirements.txt不会被静默覆盖需--forcetest_custom_pypi_server非法 PyPI 服务器地址如nonexistent会抛出requests.exceptions.MissingSchematest_parse_requirements/test_compare_modules按 PEP 508 分隔符解析 requirements 文件并正确求差集对应到源码实现import 提取get_all_imports()默认忽略.hg、.svn、.git、.tox、__pycache__、env、venv、.venv、.ipynb_checkpoints等目录pipreqs/pipreqs.py 第 105–115 行通过ast.parse遍历ast.Import/ast.ImportFrom节点收集原始 import再以partition(.)截取包名首段最后与pipreqs/stdlib文件中的标准库名单求差。包名映射get_pkg_names()读取pipreqs/mapping形如Crypto:pycryptodome、BeautifulSoupTests:BeautifulSoup的 import 名 → PyPI 包名映射未命中的 import 名直接作为包名使用。文件类型DEFAULT_EXTENSIONS [.py, .pyw]仅当开启--scan-notebooks时追加.ipynb并延迟导入nbconvert.PythonExporter未安装时会抛出NbconvertNotInstalled提示信息。如果你改动了上述任一逻辑请务必同步更新或新增对应的测试用例——这是 PR 评审的第一条硬性要求。四、Pull Request 提交指南在提交 Pull Request 之前请逐条核对以下要求CONTRIBUTING.rst 的 Pull Request GuidelinesPR 必须包含测试任何行为改动都应伴随可运行的测试用例且测试需在本地poetry run python -m unittest discover下通过新功能必须更新文档将新功能放入带 docstring 的函数中便于 Sphinx autodoc 生成 API 文档并把该特性加入 README.rst 的功能列表多版本兼容PR 应能兼容项目当前支持的全部 Python 与 PyPy 版本。原文档要求检查 CI 中所有受支持 Python 版本的测试是否通过就当前仓库而言tox.ini 的测试矩阵覆盖 CPython 3.93.13 与 PyPy3README.rst 顶部也挂有 GitHub Actions 测试徽章提交前至少应保证本地poetry run tox -e py39或你的默认版本通过。提交并推送分支$ git add . $ git commit -m Your detailed description of your changes. $ git push origin name-of-your-bugfix-or-feature提交信息建议遵循动词 对象的清晰描述风格如Fix encoding parameter for ipynb files。推送完成后通过托管平台网页提交 Pull Request并确保在 PR 描述中说明改动动机、关联 issue 以及本地验证结果。五、仓库级开发辅助设施除了 CONTRIBUTING 文档中的命令仓库还提供了两套快捷工具链根目录 Makefilemake lintpoetry run flake8 pipreqs tests、make testpoetry run python -m unittest discover、make test-allpoetry run tox、make docs调用sphinx-apidoc -o docs/ pipreqs后在docs/下构建 HTML 文档输出到docs/_build/html/、make build/make publishPoetry 打包与发布。日常开发中直接make lint与make test即可完成 CONTRIBUTING 规定的前两步检查。Sphinx 文档构建docs/下另有独立的 docs/Makefile支持make html、make latexpdf、make doctest等目标配合 docs/conf.py 的autodoc/viewcode扩展可从 docstring 自动生成 API 文档页。六、Tips只运行一个子集测试当你的改动只涉及某个功能点时无需跑完整测试套件。使用-m unittest指定测试类即可$ poetry run python -m unittest tests.test_pipreqs若只想运行单个用例可进一步限定到类名与方法名例如只验证动态版本模式或--clean行为。这在迭代调试时能显著缩短反馈回路。七、小结pipreqs 的贡献流程是一套完整可执行的质量保障体系Poetry 负责依赖隔离与可复现安装flake8 守住代码风格unittest保护 import 解析、包名映射、动态版本与 Notebook 扫描等核心行为tox 保证跨 Python 版本的兼容性Sphinx 文档体系则让 docstring 与 README 持续反映新特性。对照 tests/test_pipreqs.py 与 pipreqs/pipreqs.py 理解每一条规则背后的行为约束再按 CONTRIBUTING.rst 的流程提交你的 PR 就能既安全又快速地合入这个由志愿者驱动、正在寻找新维护者的开源项目。赞分享开发工具CLI【免费下载链接】pipreqspipreqs - Generate pip requirements.txt file based on imports of any project. Looking for maintainers to move this project forward.项目地址https://gitcode.com/gh_mirrors/pi/pipreqs点击查看免费下载相关推荐Ghost Downloader 3 快速上手10 分钟跑通这款多协议下载工具Ghost Downloader 3 快速上手10 分钟跑通这款多协议下载工具 Ghost Downloader 3 是一款用 Python PySide桌面应用网络BootstrapVue 贡献指南从本地开发环境搭建到 Pull Request 提交的完整实战BootstrapVue 贡献指南从本地开发环境搭建到 Pull Request 提交的完整实战 BootstrapVue 是一个为 Vue.js 2.x 提前端UI组件参与 Claude Code Base Action 开发从环境搭建、本地测试到提交 Pull Request 的完整贡献指南参与 Claude Code Base Action 开发从环境搭建、本地测试到提交 Pull Request 的完整贡献指南 这篇指南以仓库内 base aAI 应用人工智能代码智能体CI/CD代码评审上一篇如何永久保存微信聊天记录免费开源工具让你的数字记忆永不丢失下一篇免费LLM API使用限制解析了解每个平台的约束创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考