Build baca-dokumen gagal dengan “tidak dapat mengimpor nama 'PackageFinder' dari 'pip._internal.index'”

25

Pembuatan dokumen Sphinx pada read-the-docs gagal dengan kesalahan berikut (log lengkap di bawah):

ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/index/__init__.py)

Apakah saya melakukan sesuatu yang salah atau ini bug pada read-the-docs?

Pembuatan lokal Sphinx docs berjalan dengan baik.

Log kesalahan lengkap pada read-the-docs:

Read the Docs build information
Build id: 10299638
Project: cascade-python
Version: latest
Commit: a7d50bf781bd8076b10dd7024db4ccb628016c27
Date: 2020-01-21T17:03:12.876711Z
State: finished
Success: False


[rtd-command-info] start-time: 2020-01-21T17:03:13.203354Z, end-time: 2020-01-21T17:03:13.215400Z, duration: 0, exit-code: 0
git remote set-url origin https://github.com/brunorijsman/cascade-python.git


[rtd-command-info] start-time: 2020-01-21T17:03:13.276220Z, end-time: 2020-01-21T17:03:13.630658Z, duration: 0, exit-code: 0
git fetch origin --force --tags --prune --prune-tags --depth 50
From https://github.com/brunorijsman/cascade-python
   2a28505..a7d50bf  master     -> origin/master

[rtd-command-info] start-time: 2020-01-21T17:03:13.824496Z, end-time: 2020-01-21T17:03:13.876904Z, duration: 0, exit-code: 0
git checkout --force origin/master
Previous HEAD position was 2a28505 Fix lint
HEAD is now at a7d50bf Trigger docs build

[rtd-command-info] start-time: 2020-01-21T17:03:13.941290Z, end-time: 2020-01-21T17:03:13.951085Z, duration: 0, exit-code: 0
git clean -d -f -f


[rtd-command-info] start-time: 2020-01-21T17:03:16.657644Z, end-time: 2020-01-21T17:03:22.489740Z, duration: 5, exit-code: 0
python3.7 -mvirtualenv --no-site-packages --no-download /home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest
Using base prefix '/home/docs/.pyenv/versions/3.7.3'
New python executable in /home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/bin/python3.7
Not overwriting existing python script /home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/bin/python (you must use /home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/bin/python3.7)
Installing setuptools, pip, wheel...
done.

[rtd-command-info] start-time: 2020-01-21T17:03:22.562608Z, end-time: 2020-01-21T17:03:23.258281Z, duration: 0, exit-code: 1
/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/bin/python -m pip install --upgrade --cache-dir /home/docs/checkouts/readthedocs.org/user_builds/cascade-python/.cache/pip pip
Traceback (most recent call last):
  File "/home/docs/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/docs/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 12, in <module>
    from pip._internal.commands import (
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 6, in <module>
    from pip._internal.commands.completion import CompletionCommand
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/commands/completion.py", line 6, in <module>
    from pip._internal.cli.base_command import Command
  File "/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 25, in <module>
    from pip._internal.index import PackageFinder
ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/home/docs/checkouts/readthedocs.org/user_builds/cascade-python/envs/latest/lib/python3.7/site-packages/pip/_internal/index/__init__.py)
Bruno Rijsman
sumber
Anda adalah orang kedua di hari terakhir yang melakukan kesalahan impor yang sama . Saya sarankan mengajukan masalah dengan RTD , menyebutkan bahwa pip 20.0.0 baru saja dirilis, segera diikuti oleh perbaikan terbaru 20.0.1 , dan ini mungkin terkait. Saya juga akan mengajukan masalah dengan pip.
Steve Piercy
@StevePiercy Mencatat masalah pada repo github RTD.
Bruno Rijsman

Jawaban:

27

Masalah dan perbaikannya dijelaskan dalam masalah baca-dokumen-# 6554 ( https://github.com/readthedocs/readthedocs.org/issues/6554 ):

Saat ini semua build gagal karena peningkatan otomatis (sejak # 4823) ke pip 20.0 bermasalah (lihat pypa / pip # 7620). Sekarang ada rilis 20.0.1 yang tampaknya telah memperbaiki masalah bagi orang lain ... tapi bagaimana saya bisa memaksa readthedocs saya untuk juga memutakhirkan ke versi .1?

Cara mengatasinya adalah menghapus lingkungan build sebagai berikut (ini diambil dari https://docs.readthedocs.io/en/stable/guides/wipe-environment.html ):

  • Masuk ke read-the-docs
  • Buka Versi
  • Klik tombol Edit versi yang ingin Anda hapus di sisi kanan halaman
  • Buka bagian bawah halaman dan klik tautan penghapusan, di sebelah tombol "Simpan"
  • Sekarang Anda dapat membangun kembali versi dengan lingkungan build yang baru!

Perbaikan ini berhasil untuk saya (tetapi pada 26 Januari-2020 Anda harus menghapus lingkungan untuk setiap bangunan - lihat komentar dari Grimmy di bawah).

Bruno Rijsman
sumber
2
Sekarang ini hanya berfungsi untuk satu bangunan. Mereka mengerahkan perbaikan minggu depan. Jika bangunan Anda gagal, terus
sapu