Windows11下Python3.12通过pip安装Yotta失败求助
Windows 11下Python 3.12安装Yotta失败(PyYAML相关报错)
环境信息
- 系统:Windows 11
- Python版本:3.12
- pip版本:24.0
- 执行命令:
pip install -U yotta
报错详情
Collecting pyyaml<6.0,>=5.1 (from valinor<2.0,>=1.1.4->yotta) Using cached PyYAML-5.4.1.tar.gz (175 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [54 lines of output] running egg_info writing lib3\PyYAML.egg-info\PKG-INFO writing dependency_links to lib3\PyYAML.egg-info\dependency_links.txt writing top-level names to lib3\PyYAML.egg-info\top_level.txt Traceback (most recent call last): File "C:\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module> main() File "C:\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 118, in get_requires_for_build_wheel return hook(config_settings) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=['wheel']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_requires self.run_setup() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup exec(code, locals()) File "<string>", line 271, in <module> File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\__init__.py", line 103, in setup return distutils.core.setup(**attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 184, in setup return run_commands(dist) ^^^^^^^^^^^^^^^^^^ File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 200, in run_commands dist.run_commands() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\dist.py", line 968, in run_command super().run_command(command) File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\command\egg_info.py", line 321, in run self.find_sources() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\command\egg_info.py", line 329, in find_sources mm.run() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\command\egg_info.py", line 550, in run self.add_defaults() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\command\egg_info.py", line 588, in add_defaults sdist.add_defaults(self) File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\command\sdist.py", line 102, in add_defaults super().add_defaults() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\command\sdist.py", line 250, in add_defaults self._add_defaults_ext() File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\command\sdist.py", line 335, in _add_defaults_ext self.filelist.extend(build_ext.get_source_files()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<string>", line 201, in get_source_files File "C:\Users\dobbob11\AppData\Local\Temp\pip-build-env-brjy816p\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 107, in __getattr__ raise AttributeError(attr) AttributeError: cython_sources [end of output]
问题原因
PyYAML 5.4.1版本未适配Python 3.12,且Yotta依赖的valinor限定了PyYAML版本需在>=5.1,<6.0范围内,导致pip尝试从源码编译PyYAML时,因旧版setup脚本与Python 3.12的distutils/setuptools不兼容,触发cython_sources属性错误。
解决方法
方法1:降级Python版本
Python 3.12对旧版第三方库兼容性有限,PyYAML 5.x系列无官方适配支持。将Python降级至3.11或更低版本后,直接执行:
pip install -U yotta
即可完成正常安装。
方法2:手动安装兼容的PyYAML预编译包
- 获取适配Python 3.12的PyYAML 5.4.1预编译whl文件(需对应Windows系统及Python版本,如
PyYAML-5.4.1-cp312-cp312-win_amd64.whl) - 执行命令安装该预编译包:
pip install PyYAML-5.4.1-cp312-cp312-win_amd64.whl
- 再次运行Yotta安装命令:
pip install -U yotta
方法3:提前安装Cython并使用无隔离构建
- 先安装Cython依赖:
pip install cython
- 使用
--no-build-isolation参数跳过pip的构建隔离环境,直接使用当前环境依赖安装Yotta:
pip install -U yotta --no-build-isolation
内容的提问来源于stack exchange,提问作者Bobson Tobson
相关产品推荐
相关产品推荐

