我有一个 module modA
,其中包含一个合成的子模块modB
(用 创建PyModule_New
);现在导入模块:
from modA import modB
没关系import modA.modB
失败。
我错过了什么?
modA.cpp (使用
boost::python
,但很可能与纯 c-API 的 python 相同):#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; };
用 (g++ 而不是 clang++ 的工作方式相同) 编译
clang++ -o modA.so modA.cpp -fPIC -shared -lboost_python `pkg-config python --cflags --libs`
测试.py:
import sys sys.path.append('.') from modA import modB import modA.modB
python test.py
(注意第一次导入很好,第二次导入失败):Traceback (most recent call last): File "test.py", line 4, in <module> import modA.modB ImportError: No module named modB