通过自定义Shell函数创建和同步更新仅含指定安装包及其版本信息的requirements.txt

10 篇文章 0 订阅

通过自定义Shell命令创建和同步更新仅含指定安装包及其版本信息的requirements.txt

常见的环境复现/迁移方案

  1. pip freeze 包含了当前环境所包含的全部依赖包信息,影响复现者对主次依赖的判断;
  2. export yml 通过创建 yaml 文本实现环境打包,包含 pip 指定包安装及相关依赖信息,但存在跨平台问题;
  3. 以及其他 --from-history 等 flag 都旨在解决相关问题;

动机

根据实际的包安装过程生成一种具有高可读性的 requirements.txt 环境依赖包文本,严格按照安装先后排序,只列举指定安装包及其版本信息。

解决方案

通过自定义 pip-installpip-uninstall shell command 替代原有的 pip install/uninstall 安装包工作流,并对 requirements.txt 进行同步更新:

pip-install command (BSD & GNU)

function pip-install() {
    # loop through all listed requirements
    for var in "$@"
    do
        # attempt to install it
        pip install $var
        # add it to the requirements.txt file
        pip freeze | grep -i "^$var=" >> requirements.txt
    done

    # remove duplicates in the requirements.txt
    awk -i inplace '!a[$0]++' requirements.txt
}

pip-uninstall command (GNU请先阅读)

function pip-uninstall() {
    for var in "$@"
    do
        pip uninstall $var
        # for macOS (BSD Unix)
		# for GNU distribution using sed instead.
        gsed -i "/$var==./d" requirements.txt
        # i.e. GNU: sed -i ...
    done
}

如何使用

  1. 通过编辑器打开 ~/.zshrc~/.bashrc 配置文件;
  2. 将以上函数放入;
  3. 保存并 source 配置文件;
  4. 打开 terminal 进行测试:$ pip-install/pip-uninstall
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值