modA
合成されたサブモジュールmodB
(で作成) を含むmoduleがありますPyModule_New
。モジュールをインポートしています:
from modA import modB
大丈夫ですimport modA.modB
失敗します。
私は何が欠けていますか?
modA.cpp (を使用し
boost::python
ますが、Python の純粋な c-API と同じである可能性が非常に高いです):#include<boost/python.hpp> namespace py=boost::python; BOOST_PYTHON_MODULE(modA){ py::object modB=py::object(py::handle<>(PyModule_New("modB"))); modB.attr("__file__")="<synthetic>"; py::scope().attr("modB")=modB; };
でコンパイルします (clang++ の代わりに g++ は同じように動作します)
clang++ -o modA.so modA.cpp -fPIC -shared -lboost_python `pkg-config python --cflags --libs`
test.py:
import sys sys.path.append('.') from modA import modB import modA.modB
python test.py
(最初のインポートは問題なく、失敗するのは 2 番目のインポートであることに注意してください):Traceback (most recent call last): File "test.py", line 4, in <module> import modA.modB ImportError: No module named modB