pyinstaller打包的一个小插曲

admin 2023年1月3日11:50:23评论44 views字数 1448阅读4分49秒阅读模式

    这篇文章发表于《取证实录》(2022第三季),“翻看公众号时看到了apt-hunter,有它的描述‘ APT-Hunter 是一个针对 windows 事件日志的威胁搜索工具,可以检测隐藏在 windows 事件日志海洋中的 APT 动作,从而减少发现可疑活动的时间。此工具将充分利用收集的 windows 事件日志,并确保不遗漏被配置为检测的关键事件’。因为python需要环境支撑,不太方便,就想着打包封装成GUI,毕竟命令行用起来颇为痛苦。有了想法就动手开干,轻车熟路开始打包,没成想不太顺利,虽最终解决问题,但走了不少弯路,为避免同行重蹈覆辙,特分享出来以飨同仁。没什么技术含量,高手请直接略过。”

一、pyinstaller常用参数用法

# 常用打包参数

# -F -D互斥参数

-F  打包成一个exe文件,小项目可以采用,打开比较慢,多个.py打包时不能使用

-D  默认参数,打包结果放入到创建的文件夹中,可以看到里面有很多的依赖文件

# -w -c互斥参数

-w  使用项目的GUI界面,无cmd控制台

-c  默认参数,使用cmd控制台 如果打包文件执行报错,可尝试用-c 显示控制台

-n  执行项目的名称,默认.py的文件名

-i  将ico图标打包到exe文件中

--hidden-import 打包时导包信息

# 打包PyQt项目强烈建议 带上以下参数

--hidden-import PyQt5.sip

# 打包命令示例

# 在项目的根目录下执行打包命令

pyinstaller -w xxx.py --hidden-import PyQt5.sip

 

# 打包结果输出在项目根目录下的 dist文件夹中

# 不建议使用 -F打包成一个exe文件 所谓:打包一时爽,打开5秒钟

# 非-F命令下, 静态资源、建好的Sqlite数据库可以直接放入dist中 生成的文件夹中

二、py打包成exe

正常apt-hunter运行界面,如下图

pyinstaller打包的一个小插曲

只有一个py文件,打包时就使用参数-F,如:pyinstaller -F apt-hunter.py,如下图

pyinstaller打包的一个小插曲

经过数十秒钟的耐心等待,完成exe打包,如下图

pyinstaller打包的一个小插曲

运行后出现了报错,报错信息显示:“No module named pandas._libs.tslibs.base”,如下图

pyinstaller打包的一个小插曲

初步怀疑:用pyinstaller打包时某些库没有打包进去。

排查下原因?

三、排查过程

1、这里用到-D参数,主要是查看有没有生成报错的库成员文件存在?查看生成的目录文件,如下图

pyinstaller打包的一个小插曲

找到报错的目录,

pyinstaller打包的一个小插曲

在目录_libstslibs中没有base成员文件。

2、接着用参数-p指向python安装目录中的site-packages看看是否存在,如下图

pyinstaller打包的一个小插曲

pyinstaller打包的一个小插曲

还是同样的报错,应该是目录库中也没有这个成员,如下图

pyinstaller打包的一个小插曲

四、源码中加入base成员

在源码中加入import pandas._libs.tslibs.base语句

 pyinstaller打包的一个小插曲

再生成下看看,现在有了base成员文件了,如下图

pyinstaller打包的一个小插曲

 运行下生成的exe文件,如下图

pyinstaller打包的一个小插曲

正常了,可以视为打包成功。

结束语:通过一次排查过程,我们了解了打包过程以及出现问题后的排查方法,不难,只是个小技巧,记录下来,有时间回味下,也算是一次不错的心灵之旅。

五、补充

当时文章仅到以上就圆满地结束了,但心中对这样的过程还是不以为意,认为还是麻烦了,近日发现了一款Py自动打包软件,非常地不错,推荐给大家:https://www.52pojie.cn/thread-1732055-1-1.html


原文始发于微信公众号(MicroPest):pyinstaller打包的一个小插曲

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月3日11:50:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   pyinstaller打包的一个小插曲http://cn-sec.com/archives/1495452.html

发表评论

匿名网友 填写信息