如何维护修改版Python库,实现requirements.txt自动安装并保留更新?
解决方法
1. 先fork原库并维护专属分支
- 在代码托管平台(GitHub/GitLab都行)fork原Python库的官方仓库
- 从原库的主分支(比如main/master)切出一个自己的分支,比如叫
custom-patches,所有你的修改都在这个分支上做,别直接改主分支
2. 让requirements.txt自动装你的修改版
- 直接在requirements.txt里写你fork后的仓库地址+分支名,格式如下:
举个例子,原库是git+https://<托管平台地址>/<你的用户名>/<库名>.git@<你的自定义分支>#egg=<原库的包名>requests,你fork后的分支叫my-fix,就这么写:git+https://github.com/your-name/requests.git@my-fix#egg=requests - 之后运行
pip install -r requirements.txt,就会自动拉取你修改后的版本,再也不用手动改库代码了
3. 同步原库更新还不丢自己的修改
- 先给本地仓库加个上游远程(指向原库官方地址):
git remote add upstream https://<原库地址>/<原作者>/<库名>.git - 定期拉原库的最新代码到本地主分支:
git checkout main git pull upstream main - 切回你的自定义分支,合并主分支的更新(有冲突就手动解决):
git checkout custom-patches git merge main - 把合并后的代码推回你的fork仓库:
这样原库的新功能、bug修复都能同步过来,你的修改也能保留git push origin custom-patches
4. 可选:打包到私有PyPI(更稳定的安装方式)
- 如果不想每次从git拉取,就把修改后的库打包传到自己的私有PyPI仓库(或者TestPyPI)
- 先装打包工具:
pip install build twine - 在库根目录执行打包:
python -m build - 上传到你的私有PyPI:
twine upload --repository-url <你的PyPI地址> dist/* - 然后requirements.txt这么写:
--extra-index-url https://<你的PyPI地址>/simple/ <库名>==<你自定义的版本号>
内容的提问来源于stack exchange,提问作者Spike Speigel
相关产品推荐
相关产品推荐

