Saya menggunakan Sphinx-autodoc untuk menghasilkan dokumen API untuk paket Python saya .
Awalnya saya menggunakan Conda untuk menginstal dependensi penuh pada readthedocs, tetapi butuh waktu terlalu lama untuk membangun dan kadang-kadang bahkan gagal (#4695). Jadi, saya beralih ke pip
murni (https://github.com/JiaweiZhuang/xESMF/commit/53816d397b3c8f27b195132b27dbb41847e34e0f), yang banyak mempercepat pembangunan. Namun, sejak peralihan itu, Sphinx-autodoc gagal menghasilkan dokumen API. Halaman API saya hampir kosong:
Ini karena paket saya sendiri memiliki dependensi berat yang tidak dapat diinstal oleh pip
. Beberapa ekstensi C/Fortran harus diinstal oleh conda
. Jadi, autodoc tidak dapat mengimpor paket saya:
WARNING: autodoc: failed to import module 'xesmf.frontend'; the following exception was raised:
No module named 'xesmf'
WARNING: autodoc: failed to import module 'xesmf.backend'; the following exception was raised:
No module named 'xesmf'
...
Saya dapat membuat dokumen API yang benar dengan pip secara lokal , menggunakan dua peretasan:
pip install --no-deps xesmf
.autodoc_mock_imports = ['numpy', 'xarray', 'scipy', 'ESMF']
di conf.py
. Di antara mereka, ESMF adalah ketergantungan yang sangat berat yang hanya dapat diinstal oleh Conda (dan membutuhkan waktu lama untuk menginstal).Bahkan dengan autodoc_mock_imports
, saya masih harus menginstal pip paket saya xesmf
untuk menyediakan docstring untuk sphinx-autodoc. Saya telah membaca Baca File Konfigurasi Dokumen tetapi tidak dapat menemukan cara untuk menentukan opsi --no-deps
atau menambahkan perintah pip khusus.
Saat ini, saya hanya dapat memikirkan dua solusi yang sangat tidak memuaskan untuk membuat dokumen API secara online dengan benar:
setup.py
, jadi saya dapat menginstal pip tanpa opsi --no-deps
. Ini tidak baik untuk paket saya sendiri.Jadi saya masih mencari solusi yang lebih baik. Setiap saran akan dihargai!
Berikut adalah langkah-langkah lengkap untuk membuat dokumen yang benar di laptop saya:
conda create -n doc python=3.6
conda activate doc
conda install -c conda-forge pandoc
pip install numpydoc ipython nbsphinx sphinx_rtd_theme
pip install --no-deps xesmf
git clone https://github.com/JiaweiZhuang/xesmf
cd xesmf/doc
make html
Halaman API yang benar akan terlihat seperti:
Saya tidak berpikir kami akan menambahkan lebih banyak opsi untuk pip, maaf. Salah satu solusi yang muncul di benak saya adalah menggunakan variabel env READTHEDOCS
https://docs.readthedocs.io/en/stable/faq.html#how -do-i-change-behavior-for- read-the-docs di file setup.py Anda.
Dan jika Anda memerlukan beberapa dependensi, Anda bisa membuat file persyaratan khusus hanya untuk dokumen Anda.
@stsewd Terima kasih atas sarannya! Saya mengubah setup.py
sehingga:
on_rtd = os.environ.get('READTHEDOCS') == 'True'
if on_rtd:
INSTALL_REQUIRES = []
else:
INSTALL_REQUIRES = ['esmpy', 'xarray', 'numpy', 'scipy']
(https://github.com/JiaweiZhuang/xESMF/commit/5ce3364bfbd3081aad848c5cf4ac54a287ca236e)
Terasa sedikit hacky tetapi memecahkan masalah. Terima kasih lagi.
Komentar yang paling membantu
@stsewd Terima kasih atas sarannya! Saya mengubah
setup.py
sehingga:(https://github.com/JiaweiZhuang/xESMF/commit/5ce3364bfbd3081aad848c5cf4ac54a287ca236e)
Terasa sedikit hacky tetapi memecahkan masalah. Terima kasih lagi.