[python-users] Kompilierte C-Extension in ein Egg verpacken

Andi Albrecht albrecht.andi at gmail.com
Mi Dez 5 21:38:39 CET 2012


2012/12/5 M.-A. Lemburg <mal at egenix.com>:
> On 05.12.2012 16:19, Andi Albrecht wrote:
>> Hallo zusammen,
>>
>> ich bin gerade ein bißchen ratlos.... Ich versuche, eine kompilierte
>> C-Extension in ein Paket zu verpacken, damit ich sie via pip
>> installieren kann.
>>
>> Bisher bin ich aber noch auf keinen vernünftigen Ansatz gestoßen, wie
>> ich mir da Pakete für die unterschiedlichen Platformen basteln kann.
>> Ich hatte gehofft, eine einfache setup.py schreiben zu können, der ich
>> irgendwie (<-- da scheitere ich) sagen kann: Das ist die *.so-Datei,
>> um dann mit "python setup.py bdist_egg --plat_name=platform" ein egg
>> zu erzeugen.
>>
>> Das einzige, was bisher funktioniert hat, war ein Dummy-Modul zu bauen
>> und die so-Datei als package_data mit zu paketieren:
>>
>> mymodule/
>>   __init__,py  (from mymodule import *)
>>   mymodule.so
>>
>> Das fühlt sich aber komisch an. Aber vielleicht bin ich auch nur gerade blind.
>>
>> Hat jemand sowas schonmal gemacht oder kennt jemand einen einfachen
>> Weg, eine vorkompilierte C-Extension zu paketieren?
>
> Normalerweise muß man distutils die C-Extension kompilieren lassen,
> damit die .so Datei auch im Paket landet.
>
> Falls das nicht geht, kann man aber auch per data_files die
> Dateien mitliefern:
>
> http://docs.python.org/2.7/distutils/setupscript.html#installing-additional-files

Das Problem, dass ich mit data_files habe, ist, dass die so-Datei dann
erstmal nicht im PYTHONPATH landet. pkg_data kann ich in diesem Fall
auch nicht verwenden, da ich gar kein Package habe. Ich habe lediglich
eine einzige so-Datei (ein Python-Modul in C) und kann es leider auch
nicht selbst kompilieren, da es ein proprietäres Modul ist, dass ich
nur kompiliert erhalte.

--
Andi

>
> --
> Marc-Andre Lemburg
> eGenix.com
>
> Professional Python Services directly from the Source  (#1, Dec 05 2012)
>>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
> ________________________________________________________________________
> 2012-12-05: Released eGenix pyOpenSSL 0.13 ...    http://egenix.com/go37
> 2012-11-28: Released eGenix mx Base 3.2.5 ...     http://egenix.com/go36
> 2013-01-22: Python Meeting Duesseldorf ...                 48 days to go
>
> ::: Try our new mxODBC.Connect Python Database Interface for free ! ::::
>
>    eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>     D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>            Registered at Amtsgericht Duesseldorf: HRB 46611
>                http://www.egenix.com/company/contact/



Mehr Informationen über die Mailingliste python-users