我正在使用SWIG爲Python編寫一個C++擴展。從我所瞭解的Python和SWIG中,每個模塊都必須有自己的.pyd文件。例如,如果我有一個名爲'mymodule'的模塊,應該有一個相應的'_mymodule.pyd'文件。Python和SWIG - 單個.pyd中的多個模塊(.so)
在我的特殊情況下,我想只有一個'pyd'文件和多個模塊鏈接到它。
mypackage/
mypackage/__init__.py
mypackage/module1.py
mypackage/module2.py
我不希望有保持倍數.pyd,這樣我就可以把我的界面(.I)文件下的所有在VS2010同一個項目。
編輯:到目前爲止,我能夠使其工作的唯一方法是將我的'pyd'文件複製到兩個新文件中:_module1.pyd和_module2.pyd。但我不喜歡這個解決方案,因爲我需要不必要地複製30 Mo的'pyd'文件。我希望模塊鏈接到一個'_package.pyd'文件。
這樣做的最好方法是什麼?
這不是很清楚,你不能在.pyd中有不同的'模塊',因爲python加載器會加載del dll/so並調用init函數,也許你可以在內部使用一個命名空間並註冊不同的東西,比如mymodule.stuff1 mymodule .stuff2,這應該有不同模塊的相似命名空間。 我不確定你可以作弊並調用多個Py_InitModule –
sherpya