簡體   English   中英

將python庫綁定到C

[英]Bind a python library TO C

我想做的是大多數人想要做的相反 :我有一個用Python編寫的庫,我想讓它可用於C(可能還有其他語言)。

我知道對此的典型答案是使用C語言的Python庫,即:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

(來源: http//docs.python.org/extending/embedding.html#very-high-level-embedding

但是,這對我來說似乎不太理想:

  • 這很難看
  • 這只是為了C

相反,我想要的是一種將我的庫綁定到很多語言的方法,包括C.我不關心自動包裝器生成:我的庫非常簡單,所以我可以編寫膠水代碼。

目前,我提出的唯一解決方案是使用與上面類似的代碼將我的庫綁定到C.然后使用SWIG將C庫綁定到其他語言。

還有更好的嗎?

Well C是編程的Lingua franca 所以我想說你的方法是正確的。 為C創建綁定,然后使用SWIG等工具和其他語言的FFI綁定到C.

想到的只有另外一個想法。 今天我們看到HTTP正在成為所有API和接口的新Lingua franca 因此,人們可以考慮創建一個用python編寫的小型web服務,提供一些REST接口。 但顯然這只在某些情況下才有意義。

當然,一旦你決定在一個單獨的進程中運行python lib,就會有像進程通信一樣的所有可能性,如命名管道或套接字以及像Apache ThriftGoogle Protocol Buffers0MQ這樣的工具包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM