Créez un module dans Boost.Python avec une structure équivalente au module Python (peut-être un package pour être exact) ci-dessous.
mainmodule/
├ __init__.py
├ submodule1/
│ ├ __init__.py
│ └ hoge.py
├ submodule2/
│ ├ __init__.py
│ └ foo.py
:
:
L'importation est
import mainmodule
from mainmodule.submodule1 import hogehoge # mainmodule/submodule1/hoge.hogehoge est défini dans py
from mainmodule import submodule2
Ce sera comme ça.
Cet article décrit une utilisation assez compliquée de Boost.Python. Par conséquent, il est destiné aux personnes qui ont utilisé Boost.Python au moins une fois.
Si vous n'avez pas utilisé Boost.Python mais que cela vous intéresse, cliquez ici letsboost :: python --Kmonos.net Veuillez préparer.
Je trouve souvent un moyen d'imbriquer des classes, mais je n'ai pas trouvé d'imbrication de modules, alors prenez note. Page d'origine Packages dans les modules d'extension Python
Je pense que c'est plus rapide de voir le code source, donc c'est soudainement le code source.
Déclarez le module le plus à l'extérieur.
BOOST_PYTHON_MODULE(mainmodule) {
using namespace boost::python;
object package = scope();
package.attr("__path__") = "mainmodule";
export_submodule1();
export_submodule2();
:
}
Une fonction qui déclare un sous-module
void export_submodule1() {
using namespace boost::python;
// from mainmodule.submodule1 Permet d'être appelé sous forme d'import
object module(handle<>(bp::borrowed(PyImport_AddModule("mainmodule.submodule1"))));
//à partir du module principal d'importation, le submodule1 peut être utilisé
scope().attr("submodule1") = module;
//Définir la portée
scope scope1 = module;
//Définir diverses fonctions et classes nécessaires
def("hogehoge", &hogehoge);
:
}
Il peut être utilisé comme un module Python normal, il n'y a donc pas d'explication spécifique. L'importation est comme indiqué au début.