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

在Monorepo中使用actions/setup-python搭配Poetry缓存的问题

解决Monorepo中setup-python结合Poetry找不到pyproject.toml的问题

错误本质是:setup-python已经成功安装了Python 3.10.0,但后续执行poetry env use时,当前工作目录是仓库根目录,而你的pyproject.toml在Monorepo的子目录中,导致Poetry无法定位到项目配置文件。以下是具体解决方法:

方法1:切换到子项目目录执行Poetry命令

在GitHub Actions步骤中,先切换到包含pyproject.toml的子目录,再执行Poetry相关操作:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安装Python 3.10.0
        uses: actions/setup-python@v4
        with:
          python-version: '3.10.0'
      - name: 配置Poetry并安装依赖
        run: |
          # 替换为你的子项目实际路径,比如packages/my-python-service
          cd ./path/to/your/subproject
          poetry env use ${{ env.pythonLocation }}/bin/python
          poetry install --no-root

方法2:用Poetry的--directory参数指定项目路径

无需切换目录,直接通过--directory(或简写-C)参数告诉Poetry项目所在位置:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安装Python 3.10.0
        uses: actions/setup-python@v4
        with:
          python-version: '3.10.0'
      - name: 配置Poetry并安装依赖
        run: |
          # 替换为你的子项目实际路径
          poetry --directory ./path/to/your/subproject env use ${{ env.pythonLocation }}/bin/python
          poetry --directory ./path/to/your/subproject install --no-root

额外提示

  • setup-python会将安装好的Python路径存入pythonLocation环境变量,用这个变量指定Python路径比硬编码更可靠。
  • 如果你的Monorepo有多个Python子项目,可以为每个子项目单独配置上述步骤,或者使用Poetry的Monorepo插件来统一管理多项目依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:39:28