
当尝试在 python 3.12 环境下使用 pip 或 poetry 安装 numpy 的早期版本(例如 numpy==1.25.1)时,用户可能会遇到 modulenotfounderror: no module named 'distutils' 的错误。这个错误通常在构建阶段发生,尤其是在 poetry 等工具尝试使用 pep 517 构建后端时。
根本原因在于:
最直接且推荐的解决方案是升级 numpy 到兼容 Python 3.12 的版本。numpy 从 1.26.0 版本开始正式支持 Python 3.12,并且其构建过程已不再依赖于 distutils。
如果您没有特定需求必须使用旧版 NumPy,请直接升级。
使用 pip 升级:
立即学习“Python免费学习笔记(深入)”;
pip install "numpy>=1.26.0"
使用 poetry 升级:
在 pyproject.toml 文件中将 numpy 的版本限制更新为 ^1.26.0 或更高,然后运行:
poetry add numpy@^1.26.0 # 或者如果已存在,直接更新 poetry update numpy
如果您的项目或特定库严格依赖于某个旧版 numpy(例如,由于API兼容性问题),并且无法升级 numpy,那么另一种解决方案是降级您的 Python 环境至 numpy 1.25.x 所支持的版本,即 Python 3.9、3.10 或 3.11。
为了灵活管理多个 Python 版本,推荐使用 pyenv。
pyenv 允许您在同一系统上轻松安装和切换不同的 Python 版本。
在 macOS 上使用 Homebrew 安装 pyenv:
brew install pyenv
安装 pyenv 后,需要将其配置到您的 shell 环境中,以便 pyenv 能够拦截 python 命令并管理版本。具体配置方法可能因您使用的 shell (bash, zsh, fish) 而异,请参考 pyenv 的官方文档获取最准确的指令。
常见配置(以 Zsh 为例,添加到 ~/.zshrc 或 ~/.bashrc):
# 添加到 .zshrc 或 .bashrc 文件末尾 export PYENV_ROOT="$HOME/.pyenv" command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" # 如果使用 pyenv-virtualenv 插件
配置完成后,务必重启您的终端或运行 source ~/.zshrc (或 source ~/.bashrc) 使更改生效。
选择一个 numpy 1.25.x 兼容的 Python 版本,例如 Python 3.10.0。
pyenv install 3.10.0
您可以为全局环境或特定项目切换 Python 版本。
全局切换 (Global): 影响所有 shell 会话和项目。
pyenv global 3.10.0
局部切换 (Local): 仅影响当前目录及其子目录下的项目。推荐用于项目开发,以避免影响其他项目。
pyenv local 3.10.0
切换后,可以通过 python --version 或 pyenv version 确认当前激活的 Python 版本。
如果您正在使用 Poetry,在切换了系统或局部 Python 版本后,还需要确保 Poetry 项目也使用新的 Python 环境。
进入您的项目根目录,并告知 Poetry 使用特定的 Python 版本:
poetry env use 3.10.0
此命令会为您的 Poetry 项目创建一个或激活一个使用 Python 3.10.0 的虚拟环境。之后,您可以正常运行 poetry install 来安装依赖,此时 numpy==1.25.1 将能成功安装。
在 Python 3.12 环境下安装旧版 numpy 遇到的 distutils 错误,核心原因在于 Python 3.12 移除了 distutils 模块,而 numpy 1.26.0 之前的版本对其有依赖。解决此问题主要有两种策略:
根据您的项目需求和依赖关系,选择最合适的解决方案,并始终注意维护良好的虚拟环境实践。
以上就是解决 Python 3.12 环境下 NumPy 旧版本安装失败问题的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号