我遵循了以下可用的 Python CORBA 开发教程:omniORBpy 用户指南
从给定的 IDL 文件生成 Python 文件后,我注意到init.py
从包 Example 和 Example__POA 正在尝试导入文件echo_example_idl.py
,该文件位于下一层。目录树如下所示:
---Example (module)
|
|------ init.py
|
---Example__POA (module)
|
|------ init.py
|
---echo_example_idl.py
---echo_example.idl
---example_execution.py
示例模块中 init.py 的内容:
# DO NOT EDIT THIS FILE!
#
# Python module Example generated by omniidl
import omniORB
omniORB.updateModule("Example")
# ** 1. Stub files contributing to this module
import echo_example_idl
# ** 2. Sub-modules
# ** 3. End
example_execution.py 的内容:
#!/usr/bin/env python
import sys
from omniORB import CORBA, PortableServer
import Example, Example__POA
class Echo_i (Example__POA.Echo):
def echoString(self, mesg):
print "echoString() called with message:", mesg
return mesg
orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
poa = orb.resolve_initial_references("RootPOA")
ei = Echo_i()
eo = ei._this()
poaManager = poa._get_the_POAManager()
poaManager.activate()
message = "Hello"
result = eo.echoString(message)
print "I said '%s'. The object said '%s'." % (message,result)
我可以成功启动该程序。
两个模块的 init.py 中的 import 语句如何正常工作?是因为我在与通过omniidl 生成的源文件相同的目录中运行example_execution.py 吗?
如果我想在包含源文件的目录之外拥有执行文件(例如,在一个目录中我想拥有所有 CORBA 源,而在另一个目录中我想保留 example_execution.py 文件),我应该如何进行。如果我这样做,我将收到 echo_example_idl.py 的 ImportError