擅长:python、mysql、java
<p>如果我没听错,你想在编译后的模块不能被导入时“模仿”它吗?在</p>
<p>因此,如果您的<code>swigsubpackagebar</code>中有:</p>
<pre><code>swigsubpackagebar.aFunc(aString) -> outString
</code></pre>
<p>然后您需要一个“mock”模块来支持同一个接口,但不做任何事情。在</p>
<p>不要试图用一些动态的模块定义来解决这个问题,只需定义另一个提供所需接口的模块:</p>
^{pr2}$
<p>然后将导入语句的结构如下:</p>
<pre><code>## main.py ##
try:
import swigpackagefoo.swigsubpackagebar as swigModule
except ImportError:
import swigMock as swigModule
print swigModule.aFunc("FOO")
</code></pre>
<p>如果<code>swigsubpackagebar</code>实际上是一个类,那么它的概念几乎相同:</p>
<pre><code>## swigMock.py ##
class swigsubpackagebar(object):
pass
</code></pre>
<p>再次使用<code>as</code>关键字将其命名为相同的名称:</p>
<pre><code>## main.py ##
try:
import swigpackagefoo.swigsubpackagebar as swigClass
except ImportError:
import swigMock.swigsubpackagebar as swigClass
aClass = swigClass()
</code></pre>