setup script für Pakete mit Pyrex (und numpy)

Code-Stücke können hier veröffentlicht werden.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

nachdem ich unlängst Probleme mit einem setup-Skript hatte, hier die Lösung, die ich inzwischen gewählt habe. Etwas eingekürzt, aber so allgemein, daß wer es braucht, sicher was damit anfangen kann:

Code: Alles auswählen

from distutils.core import setup
from distutils.extension import Extension
try:
    from Pyrex.Distutils import build_ext
    has_pyrex = True
except ImportError:
    has_pyrex = False
    
if has_pyrex:
    pyx_sources = ["src/my_pyrexmodule1.pyx", "src/my_pyrexmodule2.pyx"]
    cmdclass    = {'build_ext': build_ext}
else:
    pyx_sources = ['my_pyrexmodule1.c', 'my_pyrexmodule2.c']
    cmdclass    = {}
    
import numpy
# ggf. eine Benachrichtigung an den User, daß numpy nötig ist
    
pyx_ext = Extension('ext_modul_name',
                 pyx_sources,
                 include_dirs = [numpy.get_include()])
    
setup(
    name = "paketnames",
    <snip metadaten>
    packages = ['paketname'],
    package_dir={'paketname': 'src/'},
    package_data = {'paketname': ['README', 'INSTALL']},
    ext_package='paketname',
    ext_modules = [pyx_ext],
    cmdclass = cmdclass
)
Das setzt voraus, daß das setup-Skript (setup.py) ../ über dem Ordner src ist. Das Skript ermöglicht es pyrex-basierte Module an Dritte zu geben, die kein Pyrex installiert haben. Voraussetzung ist, daß man 'my_pyrexmodule1.c' und 'my_pyrexmodule2.c' mitschifft.

Gruß,
Christian
Antworten