在CI构建中使用缓存venv时出现诗意`FileNotFoundError`



我正试图优化我们的诗歌构建时间,方法是在构建结束时将venv的tar.gz存储在azure存储blob(S3(中,密钥通过执行poetry.lockpyproject.tomlmd5sum生成(这很好(

因此,在另一个构建的开始,我会对这些文件进行散列,并尝试查找存储中是否存在该blob。如果是,请下载它并将其内容提取到项目的.venv/目录中。

这在一开始运行得很好,但过了一段时间,我开始得到在尝试通过诗歌运行命令时抛出此错误的构建:(任何命令(

+ poetry run reorder-python-imports --diff-only <SOME_FILES>
FileNotFoundError
[Errno 2] No such file or directory
at /usr/local/lib/python3.8/os.py:591 in _execvpe
587│         argrest = (args,)
588│         env = environ
589│ 
590│     if path.dirname(file):
→  591│         exec_func(file, *argrest)
592│         return
593│     saved_exc = None
594│     path_list = get_exec_path(env)
595│     if name != 'nt':

我已经确认,项目目录中没有.venv文件夹,内容与从网络安装完全相同。

如果我只是在缓存的venv上运行poetry install,它会说它没有更多的依赖项要安装,但它会抛出上面的错误。如果我删除venv并重新安装所有内容,命令会正常工作。

我对如何调试和解决这个问题没有更多的想法。非常感谢您的帮助!:(

好吧,我想我已经明白了虚拟机有一些硬编码的路径,不容易移动。

对于这篇文章中所说的,我可以移动虚拟人吗?我们不应该把移动venv作为一种好的做法。

这就是我加快建设的方式。。。

最新更新