新同事在终端敲 pip install git,报错说找不到匹配的版本。他以为 Git 是个 Python 库,装完就能在代码里调用 git 命令,折腾了半小时才发现方向不对。
Git 不是 Python 包
Git 是独立的命令行程序,用 C 写的,发行方式是安装包或者系统包管理器,跟 pip 的仓库没有关系。pip 只装 Python 包,搜不到 git 很正常。Windows 去官网下安装包,Linux 用 yum 或 apt 装 git,macOS 装完命令行工具就有了。
想在 Python 里调 git,装的是封装
GitPython 提供 Repo 对象,底层还是调用本机的 git 可执行文件。本机没装 Git,import 能成功,一执行就报找不到命令。装完 Git 记得重开终端,PATH 才会刷新。IDE 里也要重启,编辑器缓存的环境变量不会自己更新。
从仓库直接装包要带前缀
pip 支持从 git 地址装包,写法是 pip install 加 git+https 开头的地址,末尾可以带井号和分支名或标签。少了 git+ 前缀,pip 会当成普通包名去仓库里找,然后报找不到。地址里带空格或特殊字符,要用引号包起来,Windows 上尤其容易踩。
版本锁死用 commit
生产环境别直接指向主分支,把 commit 号写进地址,构建结果才可复现。私有仓库还要配凭据,SSH 方式在 CI 里容易卡在交互确认,改用带 token 的 https 地址更省事。token 别写进代码,放环境变量里。
pip 装的是 Python 的封装,Git 本体要自己装。两件事分清,报错就少一半。