当前位置: 首页 > news >正文

pyinstaller打包vnpy项目

因为我写的软件主要是自己用,很少有打包的习惯,直接源代码部署,导致打包,以下记录一下给一个朋友做的,对vnpy的改写,实现实时读取信号文件,发现文件中信号改变就做出相应的交易动作,下面记录一下打包过程中遇到的各种问题,以便下次遇到查阅

1.

打包时源代码都是可以运行的,打包过程中遇到这些问题,第一个问题是no model named talib.stream,已经安装了talib包,但是没有显试引入,于是代码中加入 import talib.stream,和日志中提示的名称相同,这个问题解决

2、第2 问题是,

还是找不到包,gateway,但与上面的区别在于,talib是第三方库,这里的gateway是vnpy源代码中一个包,和我写的代码不在同一级目录层级如下

这个错误尝试了几个方法都没解决,尝试的有,

1,源代码中把gateway绝对路劲加入到path中,代码如下,

sys.path.insert(0,包的路径)

或者

sys.path.append("爆的路径")

两个都试了,但是问题依旧

2,pycharm比较智能,它可以检索到包的路径,但是打包的时候就不行了,所以导入的时候,原来写的是,import gateway.[我要的文件和函数],其上面还有一个顶层是vnpy,于是我在前面加上vnpy.

把import gateway.[] 改成import vnpy.gateway.[],问题依旧

3,尝试了在spec打包配置文件中把gateway的路径加到Analysis列表中,问题依旧

4,在hiddenimports列表中加上gateway的绝对路径,和加上gateway的名称都不行,最后做了以上尝试之后,hiddenimports中加上vnpy包名,问题解决,不确定是最后一步起效,还是以上的哪一步也必不可少,没有回去验证,但把思路记录下来

三,下一个问题是自定义的变量和配置项找不到

my_setting是我自己的配资信息,但是没有与主程序放在同一个脚本中,而是在同级目录下,脚本名就叫my_setting.py,并且我已经降myy_setting.py的绝对路径加入到spec文件的脚本列表中,后面懒得尝试了,打包花了接近4个小时,我把my_setting里面的信息全部拆解,放到主程序中,问题解决,但这个太简单粗暴了,不求甚解,在这样做之前我已经备份了代码,毕竟这样做虽然打包ton过了,但是代码也变得混乱不堪

余下几个问题都是自己写的脚本,打包时调用不了,工具函数放在单独的脚本中竟然不行,路劲加入到spec中也不行,最后还是把它拆了全部放入主程序文件,粗暴解决,抽空得好好学一下打包的知识,总是跑源码也很麻烦,不方便管理

http://www.lryc.cn/news/427999.html

相关文章:

  • kafka 消费组 分区分配策略
  • AQS原理解析
  • 『 Linux 』利用UDP套接字实现简单群聊
  • 【数据结构与算法 | 图篇】最小生成树之Kruskal(克鲁斯卡尔)算法
  • 了解常用的代码检查工具
  • BUUCTF PWN wp--warmup_csaw_2016
  • dockerfile搭建部署LNMP
  • Rust : 数据分析利器polars用法
  • Qt第一课
  • 论“graphics.h”库,easyx
  • 如何在寂静中用电脑找回失踪的手机?远程控制了解一下
  • Android 实现动态换行显示的 TextView 列表
  • Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间
  • Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
  • 【数学建模】MATLAB快速入门
  • 【ubuntu24.04】k8s 部署5:配置calico 镜像拉取
  • Elasticsearch 的数据备份与恢复
  • Ps:首选项 - 暂存盘
  • 力扣217题详解:存在重复元素的多种解法与复杂度分析
  • 享元模式:轻量级对象共享,高效利用内存
  • 人工智能-自然语言处理(NLP)
  • 基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)---创建自定义激光雷达Componet组件
  • C++ 设计模式——策略模式
  • 【书生大模型实战营(暑假场)闯关材料】基础岛:第3关 浦语提示词工程实践
  • C++ | Leetcode C++题解之第350题两个数组的交集II
  • 遗传算法原理与实战(python、matlab)
  • 《黑神话:悟空》媒体评分解禁 M站均分82
  • 安卓中携程和线程的区别。携程是指什么?
  • 部署flannel网络(master服务器执行)遇到错误
  • 超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。