python-c-api

    1熱度

    1回答

    在一個開源項目1中,我們使用Python C API將Python/Cython和C/C++模塊與一個C++庫混合在一起。該API只將一些函數的名稱從2改爲3.假設該庫沒有這些函數編寫。如果使用Python2進行編譯,它會鏈接到Python3,反之亦然?這是由API頭中的宏阻止的嗎? 擁有可鏈接到二者的庫二進制文件將使我們免除主要的包裝麻煩。

    1熱度

    1回答

    numpy的陣列,作爲擴展類型(使用在擴展的C API又名定義),聲明Python解釋的範圍(外附加字段例如data屬性,它是一個Buffer Structure,如在numpy的的array interface記載。 要能夠將其序列化,Python 2的用慣了__reduce__函數作爲pickle協議的一部分,如在doc說明,並解釋here。 但是,即使__reduce__仍然存在在Pytho

    1熱度

    1回答

    我需要從模塊中調用Python函數,併爲它設置兩個參數:int和array。 對於我現在在調用這個函數的過程中我得到段錯誤,我不知道我做錯了什麼。有人可以指定我的錯誤在哪裏嗎? 函數在我的Python模塊app.py中。它工作,如果我從Python代碼調用它: def get_model(rate, signal): mfcc_train = MFCC().compute(rate, s

    0熱度

    1回答

    在old question關於如何捕捉蟒蛇的stdout在C++代碼,there is a good answer和它的作品 - 但只有在Python 2 我想用類似的東西與Python 3.任何人都可以幫助我嗎? UPDATE 我使用的代碼如下。它被從上面引用的Mark回答中移除,唯一的變化是使用PyBytes_AsString而不是PyString_AsString,因爲cited in do

    1熱度

    1回答

    我剛剛回顧了一些爲Python創建C擴展模塊的代碼,這些擴展模塊沒有包含足夠的錯誤檢查。在大多數情況下這很容易,但是對於module-init函數我不確定。 只是爲了便於討論,讓我們走(abriged)module-init function for itertools(是的,CPython中附帶的一個): m = PyModule_Create(&itertoolsmodule); if (m

    1熱度

    1回答

    爲numpy.frombuffer函數的文檔具體說,所產生的陣列將是一維: 解釋一個緩衝區作爲1維陣列。 我不確定此報價的後果。文檔只是告訴我,生成的數組將是一維的,但從不說輸入緩衝區必須描述一維對象。 我在C++中有一個(2D)Eigen matrix。我想創建一個Python buffer,它描述矩陣的內容。然後,我想用這個緩衝區來初始化我的NumPy數組,並將它提供給我的Python腳本。目

    1熱度

    1回答

    我想爲我的python程序設計一個外部的DLL。現在我可以使用 C++和 Visual Studio 2010生成一個後綴爲".pyd"的文件。如果.pyd未與其他由C++生成的.dll文件相關聯,則此python庫可以正常工作。 不過,現在我需要設計一個.pyd文件,這樣的結構調查: A.pyd -> 1.dll -> 2.dll 在這些文件1,2是C庫。生產A.pyd時會調用這些庫中的函數。

    1熱度

    1回答

    幾個Python結構似乎需要一個哨兵(可能爲了知道何時「停止」)。但爲什麼有些像PyMethodDef的數組有一個用多個NULL s初始化的定點元素? 例如zip: static PyMethodDef zip_methods[] = { {"__reduce__", (PyCFunction)zip_reduce, METH_NOARGS, reduce_doc}, {NUL

    0熱度

    1回答

    我試圖用這個代碼來調用Python代碼在C: #include <stdio.h> #include <Python.h> int main() { PyObject* pInt; Py_Initialize(); PyRun_SimpleString("print('This is Python in C')"); Py_Finalize()

    0熱度

    2回答

    我試圖編譯一個名爲distance的Python模塊,帶有c「python setup.py install --with-c」在windows上使用msvc 2017 10,我得到這個錯誤, Cdistance/distance.c (647): error C2099: initializer is not a constant Cdistance/distance.c (689): erro