pydantic.error_wrappers.ValidationError: 1 validation error for Lockfile
在编辑构建chipyard环境时,运行./build-setup.sh命令报错。报错信息如下:
(base) oem@core:~/Desktop/chipyard$ ./build-setup.sh riscv-tools
========== BEGINNING STEP 1: Conda environment setup ==========
Using lockfile: /home/oem/Desktop/chipyard/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml
Traceback (most recent call last):
File "/home/oem/miniconda3/bin/conda-lock", line 11, in <module>
sys.exit(main())
^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/conda_lock/conda_lock.py", line 1497, in click_install
install(
File "/home/oem/miniconda3/lib/python3.12/site-packages/conda_lock/conda_lock.py", line 1544, in install
with _render_lockfile_for_install(
File "/home/oem/miniconda3/lib/python3.12/contextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/conda_lock/conda_lock.py", line 988, in _render_lockfile_for_install
lock_content = parse_conda_lock_file(pathlib.Path(filename))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/conda_lock/lockfile/__init__.py", line 145, in parse_conda_lock_file
lockfile = lockfile_v1_to_v2(LockfileV1.parse_obj(content))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 1223, in parse_obj
return cls.model_validate(obj)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/oem/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 627, in model_validate
return cls.__pydantic_validator__.validate_python(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for Lockfile
package.416.optional
Field required [type=missing, input_value={'dependencies': {'typing...', 'version': '1.10.14'}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.10/v/missing
build-setup.sh: Build script failed with exit code 1 at step 1: Conda environment setup
pydantic_core._pydantic_core.ValidationError: 1 validation error for Lockfile
package.416.optional
Field required [type=missing, input_value={‘dependencies’: {‘typing…’, ‘version’: ‘1.10.14’}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.10/v/missing
build-setup.sh: Build script failed with exit code 1 at step 1: Conda environment setup
大概就是在说,解析锁定文件(.conda-lock.yml)时,使用的 Pydantic 模型验证失败了。错误信息指出,在处理锁定文件中某个包(package.416)的数据时,缺少必需的字段(optional 字段),导致验证错误。
解决办法:尝试降低 conda-lock
的版本,降低到1.4.0版本。具体如下(ubantu下):
conda-lock --version #查看当前conda-lock的版本
pip uninstall conda-lock #卸载当前版本
pip install conda-lock==1.4.0 #下载1.4.0版本的conda-lock
参考资料:https://discuss.python.org/t/validation-error/27335