首页 文章

VnPy - ImportError:没有名为vnctpmd的模块

提问于
浏览
1

我刚刚克隆了VnPy,我试图在Ubuntu 16.04机器上运行VnTrader,如_65746中所述 . 我一步一步地走了,但是当我跑的时候

python vnpy/examples/VnTrader/run.py

我得到以下导入错误 . 问题是什么?

Traceback (most recent call last):
  File "run.py", line 28, in <module>
    from vnpy.trader.gateway import (ctpGateway, ibGateway)
  File "/home/alessandro/anaconda2/lib/python2.7/site-packages/vnpy-1.9.0-py2.7.egg/vnpy/trader/gateway/ctpGateway/__init__.py", line 5, in <module>
    from .ctpGateway import CtpGateway
  File "/home/alessandro/anaconda2/lib/python2.7/site-packages/vnpy-1.9.0-py2.7.egg/vnpy/trader/gateway/ctpGateway/ctpGateway.py", line 16, in <module>
    from vnpy.api.ctp import MdApi, TdApi, defineDict
  File "/home/alessandro/anaconda2/lib/python2.7/site-packages/vnpy-1.9.0-py2.7.egg/vnpy/api/ctp/__init__.py", line 4, in <module>
    from .vnctpmd import MdApi
ImportError: No module named vnctpmd

1 回答

  • 0
    ImportError: No module named vnctpmd
    

    vnctpmd模块是VnPy包的CTP代理的API接口 . 对于其他所有API接口,您需要先构建它,然后导入它 .

    在您的情况下,您可能在安装VnPy时出现提示 didn't build the CTP interface ,所以现在run.py无法导入模块 .

    Do you need 'CTP' interface? No
    

    Solution A: I don't need CTP interface

    如果您不需要CTP接口,可以打开run.py评论相对于CTP的部分(以及相对于您未构建的所有其他接口)

    # /examples/VnTrader/run.py script
    # this version runs with only the IB interface built
    
    # encoding: UTF-8
    
    # 重载sys模块,设置默认字符串编码方式为utf8
    try:
        reload         # Python 2
    except NameError:  # Python 3
        from importlib import reload
    
    import sys
    reload(sys)
    
    try:
        sys.setdefaultencoding('utf8')
    except AttributeError:
        pass
    
    # 判断操作系统
    import platform
    system = platform.system()
    
    # vn.trader模块
    from vnpy.event import EventEngine
    from vnpy.trader.vtEngine import MainEngine
    from vnpy.trader.uiQt import createQApp
    from vnpy.trader.uiMainWindow import MainWindow
    
    # 加载底层接口
    from vnpy.trader.gateway import ibGateway
    
    # ### here comment the interfaces you don't need
    # from vnpy.trader.gateway import (ctpGateway, ibGateway)
    
    
    if system == 'Linux':
        # from vnpy.trader.gateway import xtpGateway
        pass
    elif system == 'Windows':
        from vnpy.trader.gateway import (femasGateway, xspeedGateway,
                                         secGateway)
    
    # 加载上层应用
    from vnpy.trader.app import (riskManager, ctaStrategy, 
                                 spreadTrading, algoTrading)
    
    
    #----------------------------------------------------------------------
    def main():
        """主程序入口"""
        # 创建Qt应用对象
        qApp = createQApp()
    
        # 创建事件引擎
        ee = EventEngine()
    
        # 创建主引擎
        me = MainEngine(ee)
    
        # 添加交易接口
        # me.addGateway(ctpGateway)
        me.addGateway(ibGateway)
    
        if system == 'Windows':
            me.addGateway(femasGateway)
            me.addGateway(xspeedGateway)
            me.addGateway(secGateway)
    
        if system == 'Linux':
            # me.addGateway(xtpGateway)
        pass
    
        # 添加上层应用
        me.addApp(riskManager)
        me.addApp(ctaStrategy)
        me.addApp(spreadTrading)
        me.addApp(algoTrading)
    
        # 创建主窗口
        mw = MainWindow(me, ee)
        mw.showMaximized()
    
        # 在主线程中启动Qt事件循环
        sys.exit(qApp.exec_())
    
    
    if __name__ == '__main__':
        main()
    

    Solution B: I need CTP interface

    如果您需要CTP,可以使用该命令重新安装vnpy

    bash install.sh
    

    当提示'你需要CTP'时回答是

相关问题