2013-05-09 8 views
5

Vorrei distribuire un pacchetto Python (mi piacerebbe utilizzare setuptools e ho già un file setup.py funzionante) e la relativa documentazione (prodotta usando Sphinx).Pacchetto Python: come evitare di ridefinire la versione dell'autore ecc.?

Mi trovo un po 'confuso dal fatto che devo specificare i nomi degli autori, manutentori , versione, release, data, e-mail ecc. In diverse parti.

Mi chiedevo se c'è qualche modo per definire questo tipo di informazioni comuni solo una volta per il pacchetto e quindi utilizzarlo sia nello script setup.py e nei file .rst e così via.

Quali sono gli approcci possibili a questo problema?

risposta

5

Se stai invocando la sfinge usando le distutils, il tuo caso è coperto. La risposta è nella documentazione in sphinx/setup_command.py. Da questo esempio, il vostro setup.py dovrebbe avere una parte che sembra un po 'come questo:

# this is only necessary when not using setuptools/distribute 
    from sphinx.setup_command import BuildDoc 
    cmdclass = {'build_sphinx': BuildDoc} 

    name = 'My project' 
    version = '1.2' 
    release = '1.2.0' 
    setup(
     name=name, 
     author='Bernard Montgomery', 
     version=release, 
     cmdclass=cmdclass, 
     # these are optional and override conf.py settings 
     command_options={ 
      'build_sphinx': { 
       'project': ('setup.py', name), 
       'version': ('setup.py', version), 
       'release': ('setup.py', release)}}, 
    ) 

Dopo di che, chiamando python setup.py build_sphinx costruirà la documentazione, avendo un unico punto di verità per quei valori condivisi. Molto bene.

Lavori per me. Spero che sia d'aiuto!