Текущая ситуация:
В моем текущем проекте я включил setuptools для реализации Sphinx-Do c, запустив
python setup.py build_sphinx
И следовал инструкциям кода в предыдущем посте SO , чтобы реализовать сценарий после установки в самом файле setup.py, чтобы я мог одновременно запускать вышеуказанный код, когда выполняю
python install .
для моего пакета.
Однако я не хочу использовать python install , но предпочитаю использовать pip install или pip вместо этого установите -e .
Актуальная проблема:
Когда я использую pip для своего пакета, я не могу сгенерировать документацию непосредственно внутри папки (для ради проблемы, он находится в C: \ Users \ XXXXX \ My_GitHub \ My_Package ), но он всегда создается в папке LocalAppData. Как мне динамически передавать путь к папке My_Package при запуске pip для генерации / копирования документации в актуальный каталог?
My setup.py код:
import os
import glob
from typing import List
from setuptools import setup, find_packages
from sphinx.setup_command import BuildDoc
from setuptools.command.develop import develop
from setuptools.command.install import install
from subprocess import call
from distutils.dir_util import copy_tree
def run_sphinx(dst_dir: str,
pattern_list: List[str]=None):
r"""Script that generates Sphinx Documentation as Post-or Pre-Install"""
# We create the conf.py and .rst using sphinx-apidoc command
apidoc_call_list = ['sphinx-apidoc',
# r'--templatedir=.\doc\_templates', # Uses custom template
'-F', '-f', # Runs sphinx-quickstart fully and forces overwriting .rst
'-M', # Module first
'-o', r'.\doc', # Destination directory
'.', # Package source location
]
if pattern_list:
for pattern in pattern_list:
apidoc_call_list.append(pattern)
call(apidoc_call_list)
# We create the documentation with BuildDoc using customized build_sphinx command
call(['python', 'setup.py', 'build_sphinx'])
# Here is a HACK method to copy the docs from the LocalAppData folder to the
# working folder. Sensible way to dynamically generate the document at repo location
# is not yet available.
pip_glob_dir = glob.glob(os.path.join(os.getenv('LocalAppData'), 'Temp', "pip-req-build*"))
if pip_glob_dir:
src_dir = os.path.join(pip_glob_dir[0], 'doc')
dst_dir = os.path.join(dst_dir, 'doc')
copy_tree(src_dir, dst_dir)
class PostDevelopCommand(develop):
"""Post-installation for development mode."""
def run(self):
develop.run(self)
run_sphinx(dst_path)
class PostInstallCommand(install):
"""Post-installation for installation mode."""
def run(self):
install.run(self)
run_sphinx(dst_path)
cmdclass = {"build_sphinx": BuildDoc,
'install': PostInstallCommand,
'develop': PostDevelopCommand}
name = "Name of package"
version = "0.7"
release = "0.7.0"
dst_path = r"C:\Users\XXXXX\My_GitHub\My_Package"
setup(
name=name,
version=version,
cmdclass=cmdclass,
...
)