GitHub Actions中poetry install仅安装依赖未安装当前项目如何解决
问题根因
该问题核心是CI环境中的Poetry未将本地开发的monaco包安装到虚拟环境内,导致pytest运行时无法找到对应模块。本地执行正常、CI执行异常,通常是Poetry版本差异、配置项默认值不同导致的自动包探测逻辑不一致。
解决方案
按以下优先级操作即可解决:
- 补全pyproject.toml配置
在项目根目录的pyproject.toml的[tool.poetry]段落中,显式指定要包含的包路径,避免Poetry自动探测失效:[tool.poetry] name = "monaco" version = "0.1.0" # 其他原有配置保持不变 packages = [{include = "monaco"}] - 固定Poetry版本保证环境一致
将CI中安装Poetry的步骤指定为和本地完全相同的版本,避免版本差异导致的行为不一致,可在本地执行poetry --version查询当前使用的版本:- name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.8.3 # 替换为你本地实际的Poetry版本 - 兜底方案:强制安装本地包
如果上述配置修改后仍有问题,在poetry install步骤后新增一步,直接用pip强制将当前项目以可编辑模式安装到虚拟环境中,该方案不受Poetry配置影响:- name: Install local package run: poetry run pip install -e .
修改后完整workflow配置示例
name: Unit Tests on: push: branches: - master - develop pull_request: branches: - master - develop jobs: test: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up python uses: actions/setup-python@v5 with: python-version: 3.9 - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.8.3 # 替换为本地实际Poetry版本 - name: Install library run: poetry install - name: Install local package run: poetry run pip install -e . - name: Run tests run: poetry run pytest
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

