¿Cómo distribuyo fuentes con mi paquete python?

He creado un paquete llamadodiagrama claro que envuelve matplotlib. También he creado una buena fuente que quiero distribuir con mi paquete. Yo consultéesta sección de la guía del usuario de Python Packaging, y determinó que debería usar eldata_files palabra clave. elegídata_files en lugar depackage_data ya que necesito instalar la fuente en un directorio matplotlib que esfuera de de mi paquete

Aquí está mi primer intento fallido desetup.py archivo:

from distutils.core import setup
import os, sys
import matplotlib as mpl

#Find where matplotlib stores its True Type fonts
mpl_data_dir = os.path.dirname(mpl.matplotlib_fname())
mpl_ttf_dir = os.path.join(mpl_data_dir, 'fonts', 'ttf')

setup(
    ...(edited for brevity)...
    install_requires = ['matplotlib >= 1.4.0, !=1.4.3', 'numpy >= 1.6'],
    data_files = [
        (mpl_ttf_dir, ['./font_files/TeXGyreHeros-txfonts/TeXGyreHerosTXfonts-Regular.ttf']),
        (mpl_ttf_dir, ['./font_files/TeXGyreHeros-txfonts/TeXGyreHerosTXfonts-Italic.ttf'])]
)

#Try to delete matplotlib's fontList cache
mpl_cache_dir = mpl.get_cachedir()
mpl_cache_dir_ls = os.listdir(mpl_cache_dir)
if 'fontList.cache' in mpl_cache_dir_ls:
    fontList_path = os.path.join(mpl_cache_dir, 'fontList.cache')
    os.remove(fontList_path)

Hay dos problemas con estosetup.py:

Intento importar matplotlib antessetup() tiene la oportunidad de instalarlo. Este es un bobobo obvio, pero necesitaba saber dóndempl_ttf_dir fue antes de corrersetup().Como se mencionóaquí, las distribuciones de ruedas no admiten rutas absolutas paradata_files. No pensé que esto sería un problema porque pensé que simplemente usaría una distribución sdist. (Los sdists sí permiten rutas absolutas). Luego descubrí que pip 7.0 (y posterior) convierte todos los paquetes en distribuciones de rueda, incluso si la distribución se creó originalmente como un sdist.

Estaba bastante molesto por el problema # 2, pero, desde entonces, descubrí que los caminos absolutos son malos porque no funcionan con virtualenv. Por lo tanto, ahora estoy dispuesto a cambiar mi enfoque, pero ¿qué hago?

La única idea que tengo es distribuir la fuente comopackage_data primero y luego mueva la fuente a la ubicación adecuada luego usando elos módulo. ¿Es ese un método kosher?

Respuestas a la pregunta(2)

Su respuesta a la pregunta