【发布时间】:2022-05-10 15:17:39
【问题描述】:
我正在学习使用 GitHub 操作实现自动测试。我正在尝试解决以下导入错误。
错误是:
utils\test_capitalize.py:2: in <module>
from src.capital import capital_case
E ModuleNotFoundError: No module named 'src'
我的仓库的结构是:
example/
|-- setup.cfg
|-- setup.py
|-- pyproject.toml
|-- .github/
| |-- workflows/
| | |-- ci.yml
|-- src/
| |-- capital.py
|-- utils/
| |-- test_capitalize.py
ci.yml的内容是:
name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-and-test:
runs-on: windows-latest
strategy:
matrix:
python-version: [3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Build
run: |
python -m pip install .
python -m pip install src
- name: Test with pytest
run: |
python -m pip install pytest
pytest
我以为python -m pip install . 已经安装了存储库中的所有模块,我对此有误解吗?。
编辑:pytest 文件是一个最小示例(我已尝试在推送之前删除 src):
import pytest
from src.capital import capital_case
def test_capital_case():
assert capital_case('semaphore') == 'Semaphore'
【问题讨论】:
-
您的输入语句中不应该有
src。在代码中应该是from capital import capital_case。也从ci.yml中删除python -m pip install src行,它上面的行是正确的。 -
在那种情况下我仍然有同样的问题。错误信息是
ModuleNotFoundError: No module named 'capital' -
我猜它没有在 setup.py 中列出。在 setup 调用中添加 py_modules=['capital']。
-
是的,这就是问题的原因,谢谢
标签: python github yaml pytest github-actions