我有一個模塊modA
,它包含一個子模塊合成modB
(與PyModule_New
創建);現在導入模塊:合成子模塊:從A導入B(ok)與導入A.B(錯誤)?
from modA import modB
這是確定import modA.modB
失敗。
我錯過了什麼?
modA.cpp(使用
boost::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++ -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
(注意第一進口只是細,它是第二個,其失敗):Traceback (most recent call last): File "test.py", line 4, in <module> import modA.modB ImportError: No module named modB
您應該添加您的解決方案作爲一個答案,並接受它。 –
我剛剛那樣做,謝謝你的建議。必須等待2天才能接受:-) – eudoxos