关于一个用Pyinstaller打包时遇到的坑

2022年6月13日 869点热度 2人点赞 7条评论

周末的时候继续码代码,把我之前的一个通道策略移植到了重构后的系统中,在用pyinstaller进行打包exe时遇到了一个问题:打包正常,但exe运行报错,错误信息如下:

通过错误提示可以看到,打包后的exe文件在运行时导入talib包的时候发生了引入错误。因为之前只写了网格策略,而网格策略中并未用到Talib这个指标库,所以没遇到类似问题。

看了看网上关于pyinstaller的文章,这类问题经常出现在自己手动安装的第三方模块上,我不清楚我的问题是否于此有关,但我的Talib确实是通过whl手动安装的。

解决该问题需要用到pyinstaller的隐含导入参数,问题之前我们编译exe时的命令行是这样的:

pyinstaller -F -w -i icons/ico.ico qthinker.py

编译命令调整为:

pyinstaller --hidden-import talib.stream  -F -w -i icons/ico.ico qthinker.py

编译完成后运行exe,问题解决。

QThinker

前地产从业者,假装是个程序员,热爱编程与交易 自研QThinker量化交易框架

文章评论

  • ap

    大佬,请教一下,SKDJ指标是用talib.STOCHF生成吗?好像生成的数据与主流软件的数值不一样

    2023年4月29日
    • qthinker

      @ap 这个指标我没用过,从别的指标计算的结果看,和主流证券软件是有一点点差别,我认为主要原因是数据精度造成的,不过整体结果是吻合的。不知道你的计算结果差别是不是很大,如果区别比较大,那就得看看参数了。另外Talib这个库已经很多年没有更新过了,可以考虑用一些现在还活跃更新的技术指标库。

      2023年5月3日
      • ap

        @qthinker 感谢,有什么好的第三方库推荐?

        2023年5月5日
        • qthinker

          @ap pandas-ta,可以试试这个,一个基于pandas的技术指标扩展。或者QuantConnect我记得也有python的工具包,印象里面也有少指标。

          2023年5月5日
          • ap

            @qthinker pandas_ta这个试过了,费时比talib多,速度没有talib快

            2023年5月12日
          • qthinker

            @ap 这个执行效率我没有和talib对比过,不过实盘上,如果是基于K线的交易策略,交易信号基于技术指标的话,我觉得执行效率上的影响并不大。比如5分钟k线拉回来,计算完毕,触发信号,这个过程也长不到那里去,而信号基于K线周期基础上的生成的,所以我感觉如果是这样,那效率倒不是最重要的。

            2023年5月14日
          • ap

            @qthinker 我监控的目标数量多,还是有影响的。方便交流一下吗?可以QQ,Q号看邮箱

            2023年5月14日