使用Pyinstaller的最新踩坑实战记录

 更新时间:2017年11月08日 09:50:54   作者:零の杂货铺  
这篇文章主要给大家介绍了最近在使用Pyinstaller的踩坑实战记录,主要介绍了PYTHON2X.DLL缺失和WINDOWS2003 32BIT提示程序无效这两个问题的解决方法,文中给出了详细的解决方法,需要的朋友们下面来一起看看吧。

前言

将py编译成可执行文件需要使用PyInstaller,之前给大家介绍了关于利用PyInstaller将python程序.py转为.exe的方法,在开始本文之前推荐大家可以先看下这篇文章,本文主要给大家介绍了Pyinstaller最新踩坑实战记录,现在网上关于pyinstaller的问题充斥着各种copy过来copy过去的答案,这大概就是各种无脑博客爬虫站最让人讨厌的地方。
而且这方面的问题,stackoverflow也是回答的千奇百怪。

强烈推荐官方文档 http://pythonhosted.org/PyInstaller/usage.html#options

引言

这里记录下我的两个踩坑解决方法,第一个其实网上有人写出来过,但是太容易被各种噪声淹没了。第二个则是摸索了一下午自己找到的解决方法。

一、PYTHON2X.DLL缺失

先声明环境

Windows10+python2.7.11 64bit+pyqt4 64bit+pyinstaller3.2解决

网上遇见这种错误基本有这几种:

  • 手动寻找.dll文件并移到对应文件夹下,网上被流传最广的做法,我测试后无效
  • 修改SPEC文件,添加各种路径,这种手动添加路径的方法也着实令人头疼
  • 编译时,使用-path参数等,也是需要手动添加路径

其实,官方文档里给出了一个参数

--win-private-assemblies

这个参数是指将共享的程序集变为私有程序集,这样的话即使改变环境,编译的程序依然只会执行私有程序集而忽视不同环境下的共享程序集。这个参数尤其适合在一台机器上编译完成后在各种不同环境下执行。

与之相近的还有一个参数

--win-no-prefer-redirects

这两个参数是在比较新的pyinstaller版本中才有的选项,所以爬虫站点copy的老博客自然不会介绍这类方法。

二、WINDOWS2003 32BIT提示程序无效

环境如下:

Windows2k3 32bit+python 2.7.11 32bit+pyqt 32bit+pyinstaller2.1解决

其实就是有一个需求是在32位的win2003上执行打包后的pyqt。

最初是安装了最新版的一套32位python+pyqt+pyinstaller在32位的win7上编译执行成功了,但是把已经是32位的程序放到2003上却报错说是无效的win32程序。一开始怀疑2003和win7的32位难道还不一样?

结果一套最新程序在win2003上编译完还是报了同样的错。

搜索无果后,偶然看到一个帖子,是说PHP5.5不支持Win2003,在运行时就会报无效的win32程序这个错,恍然想到会不会是编译用到的哪个组件同样不支持Win2003了呢?

原本未打包的程序在2003上可以执行,那么多半是pyinstaller的问题,直接将pyinstaller回退到仍然在官方列表里的最老版本2.1,发现也只有2.1还支持python2.6以下的版本,打包成功不在报错。

但是这里又有一点小问题,打包的pyqt程序点击后没有任何效果,这次怀疑是参数问题,测试后发现,首先,老版本的pyinstaller没有我之前说的那两个改变程序集的命令;其次,如果使用-w去掉了命令行框的话,pyqt也没有办法执行起来,因此最后只使用-F –clean两个参数来打包,测试后文件可以执行。

其他

其实还有些小问题,但是这些问题答案都好找,就不在这里详细讲了。

  • pywin32官网上很好下到对应版本
  • 直接的pyqt安装包官网不再提供了,可以去sourceforge下到
  • 编译的时候报VC的错,安装Microsoft Visual C++ 20xx Redistributable Package,注意32位和64位

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Python制作一个仿QQ办公版的图形登录界面

    Python制作一个仿QQ办公版的图形登录界面

    这篇文章主要介绍了Python制作一个仿QQ办公版的图形登录界面,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • Python基础之函数嵌套知识总结

    Python基础之函数嵌套知识总结

    今天带大家回顾python基础知识,文中对Python函数嵌套作了非常详细的知识总结,对正在学习python基础的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • python的列表生成式,生成器和generator对象你了解吗

    python的列表生成式,生成器和generator对象你了解吗

    这篇文章主要为大家详细介绍了python的列表生成式,生成器和generator对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • pandas重新生成索引的方法

    pandas重新生成索引的方法

    今天小编就为大家分享一篇pandas重新生成索引的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python topN 取最大的N个数或最小的N个数方法

    python topN 取最大的N个数或最小的N个数方法

    今天小编就为大家分享一篇python topN 取最大的N个数或最小的N个数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • pandas删除某行或某列数据的实现示例

    pandas删除某行或某列数据的实现示例

    本文主要介绍了pandas删除某行或某列数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 使用Python实现对PDF文件进行密码保护

    使用Python实现对PDF文件进行密码保护

    这篇文章主要为大家详细了如何使用Python来实现PDF文件的密码保护,以确保只有授权的用户可以访问文档,文中的示例代码简洁易懂,有需要的小伙伴可以参考一下
    2024-01-01
  • 利用Fn.py库在Python中进行函数式编程

    利用Fn.py库在Python中进行函数式编程

    这篇文章主要介绍了利用Fn.py库在Python中进行函数式编程,基于Scala中的类似风格,需要的朋友可以参考下
    2015-04-04
  • OpenCV实现图片编解码实践

    OpenCV实现图片编解码实践

    在很多应用中,经常会直接把图片的二进制数据进行交换,这就需要对普通进行编码解码,那么怎么才能实现,本文就来介绍一下
    2021-06-06
  • python中内置库csv的使用及说明

    python中内置库csv的使用及说明

    这篇文章主要介绍了python中内置库csv的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论