๋ด Python ํจํค์ง์ ๋ํ API ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ์ํด Sphinx-autodoc ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์๋ readthedocs์ ๋ํ ์ ์ฒด ์ข
์์ฑ์ ์ค์นํ๊ธฐ ์ํด Conda๋ฅผ ์ฌ์ฉํ์ง๋ง ๋น๋ํ๋ ๋ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋๋ก๋ ์คํจํ๊ธฐ๋ ํ์ต๋๋ค(#4695). ๊ทธ๋์ ์์ pip
(https://github.com/JiaweiZhuang/xESMF/commit/53816d397b3c8f27b195132b27dbb41847e34e0f)๋ก ์ ํํ์ฌ ๋น๋ ์๋๊ฐ ๋ง์ด ๋นจ๋ผ์ก์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ์ค์์น ์ดํ๋ก Sphinx-autodoc์ API ๋ฌธ์๋ฅผ ์์ฑํ์ง ๋ชปํ์ต๋๋ค. ๋ด API ํ์ด์ง ๊ฐ ๊ฑฐ์ ๋น์ด ์์ต๋๋ค.
๋ด ํจํค์ง ์์ฒด์ pip
๋ก ์ค์นํ ์ ์๋ ์์กด์ฑ์ด ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ์ผ๋ถ C/Fortran ํ์ฅ์ conda
๋ก ์ค์นํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ autodoc์ ๋ด ํจํค์ง๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
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'
...
๋ ๊ฐ์ง ํดํน์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์์ pip
pip install --no-deps xesmf
๋ด ํจํค์ง๋ฅผ ๊ฐ์ ๋ก ์ค์นํฉ๋๋ค.autodoc_mock_imports = ['numpy', 'xarray', 'scipy', 'ESMF']
์ conf.py
autodoc_mock_imports = ['numpy', 'xarray', 'scipy', 'ESMF']
๋ฅผ ์ถ๊ฐํ์ฌ ์ข
์์ฑ์ ๋ชจ์ ๊ฐ์ ธ์ต๋๋ค . ๊ทธ ์ค ESMF ๋ ๋์ต๋๋ค .autodoc_mock_imports
xesmf
๋ฅผ ์ฌ์ฉํ๋๋ผ๋ sphinx-autodoc์ ๋ํ ๋
์คํธ๋ง์ ์ ๊ณตํ๋ ค๋ฉด ๋ฌธ์ ๊ตฌ์ฑ ํ์ผ ์ฝ๊ธฐ๋ฅผ ์ฝ์์ง๋ง --no-deps
์ต์
์ ์ง์ ํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ pip ๋ช
๋ น์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ง๊ธ ๋น์ฅ์ API ๋ฌธ์๋ฅผ ์จ๋ผ์ธ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ถํ๊ธฐ ์ํ ๋งค์ฐ ๋ถ๋ง์กฑ์ค๋ฌ์ด ๋ ๊ฐ์ง ์๋ฃจ์ ๋ง ์๊ฐํ ์ ์์ต๋๋ค.
setup.py
์๊ตฌ ์ฌํญ์ ๋ณ๊ฒฝํ์ฌ --no-deps
์ต์
์์ด pip-install์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด ํจํค์ง ์์ฒด์ ์ข์ง ์์ต๋๋ค.๊ทธ๋์ ๋๋ ์ฌ์ ํ ๋ ๋์ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ณ ์์ต๋๋ค. ์ด๋ค ์ ์์ด๋ผ๋ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
๋ด ๋ ธํธ๋ถ์์ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ์์ฑํ๋ ์ ์ฒด ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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
์ฌ๋ฐ๋ฅธ API ํ์ด์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฃ์กํฉ๋๋ค. pip์ ๋ํ ์ต์
์ ๋ ์ถ๊ฐํ ์๊ฐ์ ์์ต๋๋ค. ๋ด ๋ง์์ ์ค๋ ํ ๊ฐ์ง ์๋ฃจ์
์ READTHEDOCS
ํ๊ฒฝ ๋ณ์ https://docs.readthedocs.io/en/stable/faq.html#how -do-i-change-behavior-for-๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. setup.py ํ์ผ์์ ๋ฌธ์ ์ฝ๊ธฐ.
๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ์ข ์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ ๋ฌธ์์ ๋ํด์๋ง ์ฌ์ฉ์ ์ง์ ์๊ตฌ ์ฌํญ ํ์ผ์ ๋ง๋ค ์ ์์ต๋๋ค.
@stsewd ์ ์ ๊ฐ์ฌํฉ๋๋ค! setup.py
๊ฐ์ด ์กฐ์ ํ์ต๋๋ค.
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)
์ฝ๊ฐ ํดํคํ์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@stsewd ์ ์ ๊ฐ์ฌํฉ๋๋ค!
setup.py
๊ฐ์ด ์กฐ์ ํ์ต๋๋ค.(https://github.com/JiaweiZhuang/xESMF/commit/5ce3364bfbd3081aad848c5cf4ac54a287ca236e)
์ฝ๊ฐ ํดํคํ์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค.