2

私が書いている新しいCライブラリをラップするPythonパッケージを書きたいのですが、正直に言うと、それはすべて少しの学習演習です。(もちろん)ライブラリと呼びたいのですがspam、Cライブラリはこのように構成されています。

Spam/
    lib/
        foo.c
        Makefile
        libspam.a   /* Generated by Makefile */
        libspam.so  /* Generated by Makefile */

foo.cが単一のパブリック関数foo(char * bar)を提供するとします。同時に、Pythonパッケージを提供したいと思います。同じ名前空間の下に、ラッパーfooと別の関数を提供したいと思います。は、then呼び出しに対していくつかのチェックを実行するPython関数です。彼らはこのように呼ぶことができますsafe_foosafe_foobarfoo

import spam

file='hello.txt'
foo(file)
safe_foo(file)

それは可能ですか?

同様の状況は、Pythonパッケージを開発してから、APIを壊さずに1つの関数をC関数として再実装したい場合です。

あなたは私がPythonパッケージングに少し慣れていないのを見ることができるかもしれません...

4

1 に答える 1

2

_foo.soこれを行う通常の方法は、Cモジュールの前にアンダースコア(eg )を付けてから、Pythonモジュールに通常の名前(eg )を付けることfoo.pyです。fooCモジュールの関数を呼び出すスタブのインポートを実行し、_fooそれを含みます。

于 2012-08-15T09:53:57.703 に答える