Wie verteile ich Schriften mit meinem Python-Paket?

Ich habe ein Paket mit dem Namen @ erstell clearplot das wickelt sich um matplotlib. Ich habe auch eine schöne Schriftart erstellt, die ich mit meinem Paket verteilen möchte. Ich habe @ konsultiediese Abteilun des Python Packaging-Benutzerhandbuchs und entschied, dass ich dasdata_files Stichwort. Ich entschied michdata_files Anstatt vonpackage_data da ich die Schriftart in einem matplotlib-Verzeichnis installieren muss, das @ idrauße meines Pakets.

Hier ist mein erster, fehlerhafter Versuch, einsetup.py Datei

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)

Es gibt zwei Probleme mit diesemsetup.py:

Ich versuche matplotlib vor @ zu importiersetup() hat eine Chance, es zu installieren. Dies ist ein offensichtlicher Booboo, aber ich musste wissen, wompl_ttf_dir war bevor ich ranntesetup(). Wie erwähntHie, Radverteilungen unterstützen keine absoluten Pfade fürdata_files. Ich dachte nicht, dass dies ein Problem sein würde, weil ich dachte, ich würde nur eine SDIST-Distribution verwenden. (sdists erlauben absolute Pfade.) Dann stellte ich fest, dass pip 7.0 (und höher) alle Pakete in Wheel-Distributionen konvertiert, auch wenn die Distribution ursprünglich als sdist erstellt wurde.

Ich war ziemlich verärgert über Ausgabe 2, aber seitdem habe ich herausgefunden, dass absolute Pfade schlecht sind, weil sie mit virtualenv nicht funktionieren. Daher bin ich jetzt bereit, meine Herangehensweise zu ändern, aber was mache ich?

Die einzige Idee, die ich habe, ist, die Schrift als @ zu verteilpackage_data zuerst und verschieben Sie die Schriftart anschließend mit der @ -Taste an die richtige Stellos Modul. Ist das eine koschere Methode?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage