gpt4 book ai didi

python - conda 自动更新 requirements.yml

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:07 28 4
gpt4 key购买 nike

我们正在使用 conda 来管理我们的 Python 项目的环境。让我们烦恼的一件事是团队中有人偶尔会在环境中安装一个新包,但忘记更新 requirements.yml 文件。

而不是在每次提交之前输入:

conda env export > requirements.yml

是否可以在有人安装或删除软件包时自动更新该文件?

最佳答案

Git 钩子(Hook)

我不知道 conda(安装/升级/删除) 的 Hook 。但是,可以为 pre-commit 添加一个 Git Hook ,检查 environment.yaml 文件是否与 conda env export 的输出相匹配.有点像

.git/hooks/预提交

#!/bin/bash

CONDA_ENV='my_env'
ENV_FILE='environment.yaml'

echo "Checking Conda environment '$CONDA_ENV' for changes..."

CONDA_YAML=$(conda env export -n $CONDA_ENV)
DIFF=$(echo "$CONDA_YAML" | git diff --no-index -- "$ENV_FILE" -)

if [ "$DIFF" != "" ]
then
echo "Changes were found in the Conda environment!"
echo "$DIFF"

echo "Updating $ENV_FILE."
echo "$CONDA_YAML" > "$ENV_FILE"

echo "Adding updated $ENV_FILE to commit."
git add "$ENV_FILE"
else
echo "No changes detected. Proceeding with commit."
fi

exit 0

这可能是最残酷的做法(即,只是盲目地覆盖文件并将其放入提交中)。一个更温和的选择是向用户发出警告并按原样继续提交。然后他们可以选择是否需要使用他们的 env YAML 修改提交。

此脚本主要只是概念验证。您可能需要解决的问题是,除非您的团队只有一个 env 实例,否则 YAML 中的 prefix: ... 行将有所不同; channels: ... 如果用户有不同的 .condarc 设置,也可能会略有不同。我想您可以从 $CONDA_YAML 中过滤掉此类差异以跨用户规范化。否则,每次不同的用户提交时,它都会提交一个新版本。

不幸的是,you can't push hook files directly ,所以你需要说服你的团队以某种方式将这样的脚本放在他们本地的 .git/hooks/ 文件夹中。 This thread讨论了一些使其间接提交的技巧。

关于python - conda 自动更新 requirements.yml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com