(1)安装:

用传统的pip install pyinstaller出错,在https://pypi.org/project/PyInstaller/#files上下载PyInstaller-3.4.tar.gz (3.5 MB),解压,cmd设置当前路径未,解压到的文件夹位置,dos上输入 python setup.py install。

当-d all时候,打开生成的可执行文件,会输出各种信息,比如调用的包有哪些,分别来自哪里(imports 选项)

  • all: All three of the following options.
  • imports: specify the -v option to the underlying Python interpreter, causing it to print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. See https://docs.python.org/3/using/cmdline.html#id4.
  • bootloader: tell the bootloader to issue progress messages while initializing and starting the bundled app. Used to diagnose problems with missing imports.
  • noarchive: instead of storing all frozen Python source files as an archive inside the resulting executable, store them as files in the resulting output directory

(2)使用注意事项:

(a)如果在源码中用相对路径调用图片文件或者图标文件,打包时会出现如下图的错误:

解决方法很简单,只需要在源码中,相对路径改为绝对路径,然后在打包时,再将绝对路径传入pyinstaller 命令即可。

举例说明,具体为:

(b)使用图片:

在源码中,使用绝对路径:

img1=PhotoImage(file=r'F:\FIELS\tkinGui\Example_pyinstaller\1.gif')
Button(win,image=img1).pack()

使用pyinstaller时,首先用cd将dos现在路径改为目标打包py文件的位置,然后 pyinstaller  -w  --add-data="F:\FIELS\tkinGui\Example_pyinstaller\1.gif;image"  imgButton.py

即可。注意,这里--add-data="源地址;目标地址“,源地址为搜索文件的地址,这里使用绝对路径,";"为os.pathsep(平台路径分割符,window为;其他为:),目标地址必须填写image,是代码运行时候所在文件夹下的文件名“image”,详见https://pyinstaller.readthedocs.io/en/stable/usage.html

(c)使用图标:

在源码中,使用绝对路径:

root=Tk()
root.title('BRN1.0')
root.resizable(0,0)
root.iconbitmap(r'F:\FIELS\tkinGui\BatchReName\BatchReName.ico')

pyinstaller 命令: pyinstaller -w -i="F:\FIELS\tkinGui\BatchReName\BatchReName.ico"  BatchReName.py

(4)打包后,代码中的ico,及image搜索路径将依赖于.py文件中设定的路径,为了保证打包形成exe文件后,仍能找到用户电脑中的路径,.py文件中的路径最好设置成相对路径,再结合os.path.abspath形成用户电脑上的绝对路径。如:

ImagePath=r'.\image\BatchReName.ico'
def resource_path(relative_path):
"""
return absolute path
"""
if hasattr(sys,'_MEIPASS'):
base_path=sys._MEIPASS
else:
base_path=os.path.abspath('.')
return os.path.join(base_path,relative_path)
ImagePath=resource_path(ImagePath)

  将imagepath从相对路径转化为用户电脑上的绝对路径。

(5)打包脚本后运行,提示vcruntime140.dll 未在指定的window上运行,

找了下,说是版本不同,或者upx压缩错误,然后就加了下 --noupx命令,打包完,软件大了一圈,不过再运行就没报错了。UPX一个免费的对各个操作系统可执行文件进行压缩的可执行打包器(https://upx.github.io/),PyInstaller looks for UPX on the execution path or the path specified with the --upx-dir option. If UPX exists, PyInstaller applies it to the final executable, unless the --noupx option was given. UPX has been used with PyInstaller output often, usually with no problems.

具体原因应该是安装的ups是64位的,然后压缩了32位的,导致报错了

参考文章链接:https://blog.csdn.net/jpch89/article/details/81183019

(6)打包时会出现问题Cannot find existing PyQt5 plugin directories,解决方法就是用everything搜索PyQt5,找到 /Library/plugins路径下的PyQt5文件夹,将里面的dll动态库pyqt5qmlplugin.dll复制出来
按照错误提示的路径,一个个的新建文件夹,形成目录C:\qt5b\qt_1524647842210_h_env\Library\plugins,将刚才复制出来的dll动态库拷贝进去即可。亲测有效。
————————————————
原文链接:https://blog.csdn.net/lixiaoyu101/article/details/84620336

(7)PyQt5打包后,自己电脑上运行可以,但拷贝到相同系统的其他电脑上,not find Qt platform plugin “windows”,全网找了半天,最后通过,将platform文件夹下的所有dll文件拷贝到跟exe文件一个目录下,成功运行。感谢博文https://blog.csdn.net/okfu_DL/article/details/84566545给我的灵感,不过跟它的方法不太一样,它是将整个platform文件夹拷贝到跟exe一个目录的,我试了下没成功。platform文件在python文件下,如E:\software\py\Lib\site-packages\PyQt5\Qt\plugins\platforms,注意这个platform应该是负责打包的解释器下的platform文件。

当本机解释器抛出not find platform警示框后,在环境变量中添加QT_QPA_PLATFORM_PLUGIN_PATH变量,值为,比如我的是C:\Users\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyQt5\Qt\plugins

(8)打包成功后,运行.exe报错: ModuleNotFoundError: No module named ’numpy.core.__dtype_ctypes’:

直接运行软件会闪退,可以通过PowerShell(Windows)来运行查看错误,与此类似的还有ModuleNotFoundError: No module named ’sklearn.neighbors.typedefs’,解决方案类似。
总结一下: 这些问题主要从GitHub上该项目的issue模块得到了解决方案(我们不是孤独的,大家都遇到了同样的问题)
可以通过两种方式得到解决:
第一种是hooks(这也是作者推荐的方式),这是一种更优雅但是却不是最方便的方式,如标题的错误我是这种方式解决的:
将下述代码放到hook-numpy.core.py文件里(当然你需要把这个路径在命令行或者.spec中告诉pyinstaller)。
hiddenimports=['numpy.core._dtype_ctypes']
更多的我采用的是第二种方法:直接在hiddenimports中指定(也可在命令行参数中指定,如下图)。
pyinstaller -F --hidden-import=numpy.core._dtype_ctypes --noupx kmlCoordExtractor.py
--hidden-import选项可以叠加,如--hidden-import=sklearn.tree._utils后可以再接着--hidden-import=sklearn.neighbors.quad_tree。
参考博文:https://blog.csdn.net/alwaysyxl/article/details/86703647
 
推荐一个大神写的关于pyinstaller博客:https://blog.csdn.net/weixin_42052836/article/details/82315118

Pyinstaller的安装及简单使用的更多相关文章

  1. (转)python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  2. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)

    一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...

  3. python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  4. memcache的windows下的安装和简单使用

    原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...

  5. 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用

    版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...

  6. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  7. libmemcached安装及简单例子

    libmemcached安装及简单例子 1.下载安装libmemcached  $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...

  8. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  9. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

随机推荐

  1. 302重定向之后,session中存储的值没了

    302重定向之后,session中存储的值没了

  2. TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS

    internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...

  3. 【剑指Offer面试编程题】题目1513:二进制中1的个数--九度OJ

    题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量.对于每个测试样例输入为一个 ...

  4. 第2节 storm路由器项目开发:8 - 9、集群监控软件ganglia的安装和使用

    Ganglia监控Hadoop集群的安装部署 详情请参见 http://boendev.iteye.com/blog/1750615 一. 安装环境 CentOS6.5x86_64 安装gmetad的 ...

  5. windows系统下 VUE cli手脚架环境安装

    1.安装 node.js环境  (cmd命令工具里输入 node -v 检测是否安装成功) 2.安装VUE 全局环境 npm install --global vue-cli (cmd命令工具里面安装 ...

  6. 如何配置nginx

    Nginx安装手册 1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. n  gcc 安装nginx需要先将官网下载的源码进行编译,编译 ...

  7. 易升地址,windows 10, 1511 升级 1607 仍然有效

    https://www.microsoft.com/zh-cn/software-download/windows10 易升地址, windows 10 ,1511 升级 1607 仍然有效

  8. spring中的@Transactional注解

    前几天灿哥问我,在做程序的时候,有没有考虑到事务,如果一个函数在中间执行过程中报错了,它会回滚么?我查了一查,spring确实有这样一个注解,能快速帮助我们配置事务管理.下面我就简单介绍一下这个注解. ...

  9. JAVA开源爬虫列表及简介

    本文列举了一些较为常用的JAVA开源爬虫框架: 1.Apache Nutch 官方网站:http://nutch.apache.org/ 是否支持分布式:是 可扩展性:中.Apache Nutch并不 ...

  10. tomcat报错catalina.sh: line 401: /usr/java/jdk1.7.52/bin/java: No such file or directory(转)

    原文:https://blog.csdn.net/reblue520/article/details/52588825 将生产服务器的Tomcat目录打包过来后解压后,启动Tomcat后,发现如下问题 ...