gpt4 book ai didi

python - 如何验证虚拟环境的完整性

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:27 26 4
gpt4 key购买 nike

我正在寻找一种在运行时验证 virtualenv 完整性的方法。

更明确地说;我们正在将 python 项目部署到生产服务器。在 deploy 下创建一个 virtualenv 并使用 pip 和 setuptools 安装包(因为我们自己的包没有分发)。到目前为止一切都井井有条。这是一个医疗级应用程序,所以在每次运行时我们都需要验证 virtualenv 没有被改变。根据 pip 列表(或 pipfile.lock,如果我们切换到 pipenv)检查版本是不够的(据我所知)。我们还需要验证 virtualenv 中没有任何更改(例如 virtualenv/lib/python/site-packages 下的代码更改)。有没有 pythonic 的方法来做到这一点?

最佳答案

我认为这可以做到:

import hashlib, os

basedir = os.path.abspath(os.path.dirname(__file__))
hasher = hashlib.md5()
directory = "/".join((basedir,"venv"))
bs=4096


def flatten(d):
for path, dirs, filenames in os.walk(d):
for filename in filenames:
yield os.path.join(path, filename)


if os.path.exists(directory):
dircontent = list(flatten(directory))
for item in dircontent:
with open(item, "rb") as _f:
buf = _f.read(bs)
while len(buf) > 0:
hasher.update(buf)
buf = _f.read(bs)
else:
exit(1)

print(hasher.hexdigest())

flatten 函数非常简单,它只是遍历 venv 并创建一个巨大的列表,其中包含文件树从上到下的所有文件路径,从您提供的任何路径开始 d-参数。我从here

然后我以 ro,b 模式打开文件并将小块读入缓冲区(以免在意外大文件的情况下阻塞系统内存)并使用缓冲区内容更新 md5-hashobject。这是为 venv 中的每个文件完成的。

不确定这对你来说是否是一个可行的解决方案,但这样做很有趣,所以感谢你的问题:)

关于python - 如何验证虚拟环境的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734619/

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