83401


Sphinxの開発環境に慣れている方ならFAQかもしれません。  
宜しくお願いします。

### 質問

forkしたSphinxをローカルのclone環境でpytestを実行する場合に、必要な準備について教えてください。

### 現状

次のエラーが発生します。（「=」「_」「！」は多いので削りました）

[code]

    ======== ERRORS ==============================================
    ________ ERROR collecting tests/test_util_inspect.py ____________________________
    ImportError while importing test module '/home/naomasa/sphinx/devcore/tests/test_util_inspect.py'.
    Hint: make sure your test modules/packages have valid Python names.
    Traceback:
    /usr/lib/python3.8/importlib/__init__.py:127: in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
    tests/test_util_inspect.py:19: in <module>
        import _testcapi
    E   ModuleNotFoundError: No module named '_testcapi'
    ======== short test summary info ======================================
    ERROR tests/test_util_inspect.py
    !!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ======== 1 error in 6.40s =========================================
    
[/code]

### 環境

  * windows10/cygwin64
  * python3.8.10
  * Sphinx4.2.0/時々4.3.0+(cloneからsdistして直接pip installしたもの)

### 確認したこと

  * circleci上ではエラーは発生しないでテストが終わります。
  * 「ModuleNotFoundError: No module named '_testcapi'」から分かった次のことは試しました。 
    * `pip install python-test` … インストール済み
    * `python -m pytest tests` … 同じエラー
    * `pip install -e .` and `python -m pytest tests` … 同じエラー
    * 同じ環境で `make test` … 同じエラー
    * 同じ環境で `python setup.py test` … setuptoolsのエラー。

### 考察

次の可能性を考えています。

  * インポートしていないパッケージがある。
  * 実行時に設定しておく環境変数がある。
  * その他、何らかの設定が必要。


CC BY-SA 4.0
2021-11-02T18:20:04.330
83399
2021-11-03T11:54:50.697
2021-11-02T21:36:17.297
48452
48452
question
python3 sphinx circleci
forkしたSphinxをローカルのclone環境でpytestを実行すると「ModuleNotFoundError: No module named '_testcapi'」が発生


Python本体のテスト用パッケージが不足している可能性があります。  
CircleCIでテスト実行に使用している環境はこちらです。  
<https://github.com/sphinx-doc/docker-ci/blob/master/Dockerfile>

Ubuntuであれば `apt install python3-dev` のインストールで解消する可能性がありそうです。


CC BY-SA 4.0
2021-11-02T20:37:26.453
83401
2021-11-02T20:37:26.453
806
83399
answer


いただいた回答がきっかけで解決しました。  
回答として情報を追記しておきます。

### 結論

cygwinのパッケージが不足していた

  * cygwinパッケージ `python38-test` のイントールで解決。
  * `pip install python-test` はしていたので意識外でした。

現状FAILが一つありますが、エラーではなくFAILなので追々調べます。  
（「=」は削っています）

[code]

    …
    -- Docs: https://docs.pytest.org/en/stable/warnings.html
    ==== short test summary info ======================================
    FAILED tests/test_ext_imgconverter.py::test_ext_imgconverter - sphinx.errors.ExtensionError: conv...
    ==== 1 failed, 1735 passed, 28 skipped, 9 warnings in 611.24s (0:10:11) =======
    
[/code]

### 解決まで

  1. 回答をもらう。
  2. もらった情報から、確かに「python3-dev」辺りが怪しいと思う。
  3. cygwinで該当しそうなものを確認する。
  4. ここで「cygwinで検索」を思いつく。
  5. 「_testcapi」で検索。
  6. 候補は「python38-debuginfo」「python38-test」だが内容から後者と判断。
  7. インストール。
  8. pytestがエラーで止まらずに最後まで実施されたことを確認。

※4が決め手といえば決め手なんですが、対象範囲を絞れたからこそなので…


CC BY-SA 4.0
2021-11-02T21:47:31.293
83402
2021-11-03T11:54:50.697
2021-11-03T11:54:50.697
3060
48452
83399
answer