Poetry项目切换至Python 3.11遇版本不兼容问题求助
问题背景
我们有一个使用Poetry管理的名为daisy的项目,其pyproject.toml初始配置依赖Python ^3.9。当将配置中的Python版本修改为^3.11并执行poetry update命令时,出现错误提示:
Current Python version (3.9.7) is not allowed by the project (^3.11). Please change python executable via the "env use" command.
执行poetry env list查看环境,发现仅有一个已激活的daisy-Z0c0FuMJ-py3.9环境。该问题仅在Linux机器上出现,MacBook上无此异常。
解决方案
检查系统是否安装Python 3.11
先确认Linux系统中已安装Python 3.11,执行命令:python3.11 --version如果提示命令不存在,根据发行版安装:
- Debian/Ubuntu系:
sudo apt install python3.11 python3.11-dev - RHEL/CentOS系:
sudo dnf install python3.11
- Debian/Ubuntu系:
让Poetry切换到Python 3.11环境
执行以下命令,为项目创建并激活基于Python 3.11的虚拟环境:poetry env use python3.11验证环境切换结果
执行poetry env list,会看到新生成的类似daisy-xxx-py3.11的环境,且带有*标记表示已激活;再执行:poetry run python --version确认输出为Python 3.11.x版本。
重新执行依赖更新
现在运行poetry update,即可正常更新依赖,不会再出现版本不匹配的错误。
差异原因说明
MacOS中通过Homebrew等方式安装的Python版本,Poetry能自动检测并适配;而Linux系统默认Python版本通常固定为旧版本,额外安装的Python版本需要显式指定给Poetry,才会创建对应版本的虚拟环境。
内容的提问来源于stack exchange,提问作者Freek

