topLevelPackage = _importAndCheckStack(trialname)
File "/mnt/sharefile/ugs-cligw/cligw/tap.py", line 3, in <module>
from . import share, ssh
File "/mnt/sharefile/ugs-cligw/cligw/share.py", line 5, in <module>
from cligw.proxy import CliGWClient
File "/mnt/sharefile/ugs-cligw/cligw/proxy.py", line 8, in <module>
from cligw.share import tcp_cligw
ImportError: cannot import name tcp_cligw
解决办法一般是
延迟导入模块
from twisted.internet import protocol
from twisted.protocols import policies
from lib import utils
# from cligw.share import tcp_cligw
# 延迟到使用tcp_cligw时再导入tcp_cligw
# ...
class CliGWProxy(utils.LogMixin, policies.TimeoutMixin, protocol.Protocol):
def handle_DEVUP(self, *msg):
"""设备上行消息"""
from cligw.share import tcp_cligw
tcp_cligw.sendMessage("DEVUP", msg)
举例具体说明
# a.py
# -----------
class A(object):
b = B()
# b.py
# --------
class B(object):
a = A()
# 一般修改为:
# a.py
# -----------
from b import B
class A(object):
b = B()
# b.py
# --------
class B(object):
from a import A # 用到的时候再import
a = A()