You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Poetry创建项目默认Python版本错误的排查与解决

解决Poetry创建项目默认设置Python 3.11约束的问题

问题原因

Poetry创建新项目时,默认会根据自身运行环境的Python版本生成pyproject.toml中的Python版本约束。你的pyenv管理的是3.9.6,但Poetry实际运行在其他环境(比如你命令行里的(base) conda环境),该环境的Python版本为3.11,所以自动生成了^3.11的约束,导致和pyenv的3.9.6不兼容。

解决方案

1. 让Poetry绑定pyenv的Python版本(根治)

确保Poetry使用pyenv管理的3.9.6运行,这样创建项目时会自动匹配版本约束:

  • 确认pyenv的3.9.6为当前全局版本:
    pyenv global 3.9.6
    python --version  # 验证输出为 Python 3.9.6
    
  • 用pyenv的Python重新安装Poetry:
    curl -sSL https://install.python-poetry.org | python3 -
    
  • 验证Poetry的运行环境:
    poetry run python --version  # 输出应为 Python 3.9.6
    

之后执行poetry new venv,生成的pyproject.toml会自动设置python = "^3.9"。

2. 创建项目时直接指定版本约束

如果不想重装Poetry,每次创建项目时显式指定目标版本:

# 指定3.9系列版本
poetry new venv --python "^3.9"
# 或精确指定3.9.6
poetry new venv --python "3.9.6"

生成的配置文件会直接匹配你的pyenv版本,无需手动修改。

3. 配置Poetry全局默认版本约束

通过Poetry全局配置,设置新项目默认使用当前Python版本的约束:

  • 先确认当前活跃Python版本为3.9.6,然后执行:
    poetry config new-project.python "^3.9"
    

或者用动态命令自动匹配当前版本的主副版本号:

poetry config new-project.python $(python --version | awk '{print $2}' | cut -d'.' -f1-2)

后续创建新项目时,会自动应用该版本约束。

之前尝试无效的原因

  • 卸载重装时,Poetry可能仍被安装到原环境(如conda的base环境),导致运行时使用的还是3.11版本的Python。
  • pyenv local 3.9.6仅设置当前目录的Python版本,但Poetry创建项目时读取的是自身运行环境的版本,而非当前目录的版本。

内容的提问来源于stack exchange,提问作者ahhhgetit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:10:35