Mac OS 10.6 - Frage zu setup.py

Probleme bei der Installation?
Antworten
momo
User
Beiträge: 9
Registriert: Donnerstag 19. März 2009, 17:52

Liebes Forum,

ich würde gerne ein aus C- und Python-Modulen bestehende Bibliothek verteilen und habe noch eine Frage zum setup.py - Script für den Mac.

Ich benutze das mit Mac OS X 10.6 ausgelieferte Python 2.6.1, meine Bibliothek benötigt zum Compilieren eine mit numpy installierte Headerdatei.

Auf dem mac sind die Pfade zu den Dateien verschieden zu Linux, damit die Installation auf beiden Systemen klappt habe ich eine Abfrage eingebaut und dann den vorgefundenen Pfad mit in das Script geschrieben. Ich bin mir aber nicht sicher, ob das so im Sinne des Erfinders ist und möchte euch bitten mal drüber zu sehen (Zeile 10).

Ist das so OK, oder gibt es eine elegantere Methode das include-Verzeichnis von numpy zu finden, die auch bei möglichen Varianten der Python-Installation auf dem Mac funktioniert ? (kenne mich leider kaum mit Mac OS aus)

Vielen Dank für eure Mühe !

Guido

Code: Alles auswählen

from distutils.core import setup, Extension
import sys
import os

extra_compile_args = []
extra_compile_args.append("-DNUMPY=1")

if sys.platform=="darwin":
    arrayobject_h_include = [os.path.join(sys.prefix,"Extras/lib/python/numpy/core/include")]

else:
    arrayobject_h_include = [os.path.join(sys.prefix,
                                "lib/python%s.%s/site-packages/numpy/core/include"
                                % sys.version_info [:2])]




MOMO_Bond = Extension('MOMO.MOMO_Bond',sources=['src/MOMO_Bond.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_Angle = Extension('MOMO.MOMO_Angle',sources=['src/MOMO_Angle.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_Dihedral = Extension('MOMO.MOMO_Dihedral',sources=['src/MOMO_Dihedral.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_OOP = Extension('MOMO.MOMO_OOP',sources=['src/MOMO_OOP.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_GMcharge = Extension('MOMO.MOMO_GMcharge',sources=['src/MOMO_GMcharge.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_Coulomb = Extension('MOMO.MOMO_Coulomb',sources=['src/MOMO_Coulomb.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_vdw = Extension('MOMO.MOMO_vdw',sources=['src/MOMO_vdw.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_PISCF = Extension('MOMO.MOMO_PISCF',sources=['src/MOMO_PISCF.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_OOP = Extension('MOMO.MOMO_OOP',sources=['src/MOMO_OOP.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_Dunitz = Extension('MOMO.MOMO_Dunitz',sources=['src/MOMO_Dunitz.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

MOMO_SMcharge = Extension('MOMO.MOMO_SMcharge',sources=['src/MOMO_SMcharge.c'],
                             include_dirs=['Include']+arrayobject_h_include,
                             extra_compile_args=extra_compile_args)

                          
setup (name = 'PyMOMO',
       version='0.0.11',
       description='The MOMO forcefield for MMTK',
       author='Guido Wagner',
       author_email='',
       url='www.pymomo.de',
       ext_modules = [MOMO_Bond,MOMO_Angle,MOMO_Dihedral,MOMO_OOP,
                      MOMO_GMcharge,MOMO_Coulomb,MOMO_vdw,MOMO_PISCF,
                      MOMO_OOP,MOMO_Dunitz,MOMO_SMcharge],

       packages=['MOMO',],
			   

	package_data={'MOMO':['MOMO.MPL',]})

Antworten