我在一个 virtualenv 中的 Jenkins 从属上运行 Python 3.7,该虚拟环境是从我存储在项目的 git 中的 Pipfile.lock 创建的。
对于我在从属服务器上部署的每个作业,我需要知道 virtualenv 是最新的还是需要 pipenv 同步。
目前 pipenv 不提供检查现有 virtualenv 是否与它相关的 Pipfile.lock 匹配的方法。
我目前正在使用以下脚本来检查上述内容,但我想知道是否有更好\更简单\官方的方法来做到这一点。
我的方法:
if virtualenv exists and Pipfile.lock.back exists:
compare md5sum of Pipfile.lock from project's Git vs. a previous copy Pipfile.lock.bak
if files are identical:
skip pipenv sync
finish
else:
perform pipenv sync
if sync is successful:
save a copy of project Git Pipfile.lock as Pipfile.lock.bak
finish
else: # virtualenv doesn't exist
pipenv sync
if sync is successful:
save a copy of project Git Pipfile.lock as Pipfile.lock.bak
finish
- 注意:此方法不处理任何 virtualenv 损坏问题。