如何自动在Pipfile中固定版本?阻止pipenv安装时更新所有包
解决pipenv install时自动固定版本并阻止全局更新的问题
- 阻止安装新包时更新所有依赖
每次执行安装命令时加上--keep-outdated参数,这样pipenv只会处理你指定的目标包,不会检查和更新已有的依赖包:
pipenv install somepackage --keep-outdated
- 自动将新包版本固定到Pipfile
默认情况下,pipenv会在Pipfile中写入通配符版本(比如somepackage = "*"),要自动替换为精确版本,可以用以下脚本整合到安装流程中:
# 定义要安装的包名 PACKAGE="somepackage" # 安装包并保留现有依赖版本 pipenv install "$PACKAGE" --keep-outdated # 获取已安装包的精确版本 VERSION=$(pipenv run pip show "$PACKAGE" | grep -Po '(?<=Version: ).*') # 替换Pipfile中的通配符版本为精确版本 sed -i.bak "s/$PACKAGE = \".*\"/$PACKAGE = \"==$VERSION\"/" Pipfile rm Pipfile.bak
你也可以把这段逻辑做成shell别名,方便日常使用:
alias pipenv-fix-install='function _pipenv_fix_install() { PACKAGE="$1"; pipenv install "$PACKAGE" --keep-outdated; VERSION=$(pipenv run pip show "$PACKAGE" | grep -Po "(?<=Version: ).*"); sed -i.bak "s/$PACKAGE = \".*\"/$PACKAGE = \"==$VERSION\"/" Pipfile; rm Pipfile.bak; }; _pipenv_fix_install'
之后直接执行pipenv-fix-install somepackage就能完成自动固定版本+阻止全局更新的操作。
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

