(本文在Windows系统下对python程序进行的打包,打包成exe文件,其它系统是否能成功并未测试。)

1.安装Pyinstaller

Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块。

安装 PyInstaller 模块与安装其他 Python 模块一样,使用 pip 命令安装即可。在命令行输入如下命令:

pip install PyInstaller

显示Successfully installed pyinstaller就说明安装好了。

2.打包控制台程序

打包分两种情况,一种是打包控制台程序,另外一种是打包GUI程序,因为python程序多为脚本程序,很少会用python去编写界面。这里重点讲解如何打包控制台程序。

打开cmd命令窗口,使用cd命令切换到.py文件所在路径,然后使用以下命令进行打包:

pyinstaller -F 程序文件名.py

以上是最简单的打包方式,上面的打包方式在windows下默认会有cmd窗口,pyinstaller还提供一些可选项进行其它设置;

-无参数,打包成一个文件夹
-D, -打包成一个文件夹,与上面相同
-F, --one-file打包成一个exe文件
-p DIR, --paths DIR添加路径,一般用来添加程序所用到的包的所在位置
-c, --console, --nowindowed提供程序视窗,程序有输入输出的界面,默认
-w, --windowed, --noconsole无视窗,程序后台运行
-i <FILE.ico or FILE.exe,ID or FILE.icns>, --icon <FILE.ico or FILE.exe,ID or FILE.icns>添加icon图标

详细说明:

-w
windows环境下,打包完成我们在执行的时候,会弹出类似cmd的窗口,进行输入输出和交互。但如果你是打包的tkinter这种GUI,那就不需要后台影响美观的黑框了...

(建议一开始打包可以不去掉控制台,运行时可以找到错误)

-F和-D

-D(一个文件夹,多个文件,exe需要同其它文件一起才能执行)在一个文件夹下打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,如果需要维护代码或对其进行更改,推荐使用这种方法,可操控。

-F(多个文件夹,但exe是单独一个文件,可单独执行)如果使用-F参数,则可以将所有依赖打包成一个单独的exe文件(虽然也有一些其它文件附带),对于新手来说我更推荐这个,使用起来更加傻瓜式。

3.打包GUI程序

同样,首先打开cmd命令窗口,使用cd命令切换到.py文件所在路径。

pyinstaller  -F -w 程序名.py

因为窗体程序一般不希望会有控制台出现,所以这里加了-w,可以看到,打包GUI与控制台程序基本是一样的。

4.注意:

1.其他文件夹作为python第三方包导入时,在pycharm中可以直接运行,但是在本路径下打包后得到的文件不可以运行:

这时,将图片等资源文件放入exe统计目录下即可。

2.-p
这个参数如说明所示,虽然pyinstaller可以将代码import导入的依赖包进行打包,但有时,我们自己开发的代码,可能会忽视,那就需要我们通过-p 参数手动引入了.

2.pyinstaller打包的文件有的发现只能在自己电脑上运行,将需要打包的文件复制,存放第三方库的文件夹一般的路径是:安装目录\Lib\site-packages ,这样可以在没有安装python的电脑上运行。如使用了requests,可以使用查找的方式,找到这个包在哪里,然后把它复制到file.py同目录下

5.存在报错及解决方法:

最近又执行了一次之前打包的程序,突然就报错了,首先报的这个错误:

Traceback (most recent call last):

File "c:\users\suda\anaconda3\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 357, in get_module_file_attribute

attr = loader.get_filename(package)

AttributeError: 'NoneType' object has no attribute 'get_filename'

。。。中间一大堆报错

PyInstaller.exceptions.ImportErrorWhenRunningHook: Failed to import module __PyInstaller_hooks_0_numpy required by hook for module c:\users\suda\anaconda3\lib\site-packages\PyInstaller\hooks\hook-numpy.py. Please check whether mod

ule __PyInstaller_hooks_0_numpy actually exists and whether the hook is compatible with your version of c:\users\suda\anaconda3\lib\site-packages\PyInstaller\hooks\hook-numpy.py: You might want to read more about hooks in the manu

al and provide a pull-request to improve PyInstaller.

网上找了很多方法,有说要重装PyInstaller的,有说要装其它依赖包的,但试过了都没能解决问题,最后再一篇博文中看到说他程序里面引用了numpy包,只要将这个包注释掉就不报错了,我程序里面并没有直接引用numpy(但可能其它关联文件引用了),所以也不可能注释。

于是我将numpy卸了重装,问题神奇的解决了。

pip install --upgrade numpy

之后又报错:TypeError: from_buffer() cannot return the address of the raw string within a bytes or unicode object

网上看了一下,可能这是python3.5的bug,问题在于日志信息中的cffi报错,于是重新安装cffi

pip install --upgrade cffi

重装后问题完美解决

采用Pyinstaller将python程序打包成exe可执行程序相关推荐

  1. Pyinstaller将Python程序打包成EXE(多种模式的打包)

    Pyinstaller将Python程序打包成EXE 文章目录 Pyinstaller将Python程序打包成EXE 安装 安装 pip install pyinstaller 博文已经迁移到个人主页 ...

  2. mac python3打包成窗体程序_使用pyinstaller将python程序打包成exe/苹果软件的方法与异常解决 - pytorch中文网...

    一.安装pyinstaller 通过清华镜像安装比较快 # 二者选其一执行,第二条快 pip3 installer pyinstaller # 清华镜像安装 # pip3 install -i htt ...

  3. PyInstaller将python脚本打包成exe可执行程序

    一.PyInstaller说明 pyinstaller是一个第三方模块,托管在github上,它是一个把python脚本及其依赖的模块,打包成一个独立的可执行程序,使其能运行在没有安装python环境 ...

  4. python程序打包成exe可执行文件,亲测可行(pyinstaller教程)

    python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...

  5. 将python程序打包成exe

    将python程序打包成exe,这样我们下次想要实用自己写的python时,就不需要打开python或者编辑器了,可以直接点了exe运行,是个比较实用的功能. 参考链接:https://www.cnb ...

  6. 复制粘贴,快速将Python程序打包成exe

    大家好,我是菜鸟哥. 为了将Python程序发送给不懂代码和没有安装Python的同事.朋友使用,最好的方式就是将Python程序打包成exe可执行文件,再发送给他们. 我之前曾经打包过几次,操作并没 ...

  7. windows系统用cx_freeze给python程序打包成exe可执行文件

    转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/81740340 本机window ...

  8. 用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)

    目录 打包前置知识 一.什么是exe可执行文件? 二.为什么要将 Python 程序打包为 exe 可执行文件? 三.为什么 Python 程序不能直接运行呢? 四.我们用什么来打包 Python 文 ...

  9. 本文一步一步地教你如何将Python程序打包成exe文件—赶紧进来学习吧

    [先来看看几个问题] 一.什么是exe可执行文件? exe文件英文全名是executable file,翻译为可执行文件(但它不等于可执行文件),可执行文件包含两种,文件扩展名为.exe的是其中的一种 ...

最新文章

  1. Python程序员Debug利器,和Print说再见 | 技术头条
  2. 40亿次仿真学习:人工智能5:0大胜人类飞行员!
  3. linux vi 强制退出_linux的编辑大法
  4. 日常运维管理技巧十七(Nethogs进程流量监控工具)(转载)
  5. LeetCode Algorithm 83. 删除排序链表中的重复元素
  6. 眉骨高者为大贵之相_什么样才算富贵相?曾国藩的识人秘诀(组图)
  7. 一文带你了解华为云DevCloud为何能全面领跑中国DevOps云服务市场
  8. 震惊整个世界的新发现,科学界的大骗局
  9. 如何快速学习一门新的编程语言?零基础开始学编程,就可以这样!
  10. Arm公布2019年物联网领域五大预测:智能家居、智慧城市、医疗保健上榜
  11. windows远程连接linux中mysql数据库
  12. hadoop大数据概述
  13. 假币问题python
  14. 3Idiots-2014-Kaggle 比赛源码走读
  15. POODLE SSLv3 安全漏洞 (CVE-2014-3566)
  16. pod init 报错 can‘t modify frozen String (FrozenError) [Xcodeproj] Unknown object version (56).
  17. rac集群状态中监听状态CHECK TIMED OUT处理
  18. 为什么不要把鸡蛋放在同一个篮子里?
  19. SpringBoot重点详解--dbcp2数据源配置
  20. python中time模块和datetime模块

热门文章

  1. AcrelCloud-9500电瓶车充电桩收费平台在公共场所中的应用
  2. linux ubuntu硬盘数据丢失【硬盘开机未挂载】
  3. 致所有仍然关注BreezeMaphack的朋友
  4. 卖NFT表情包赚上百万,区块链技术终于找到了真正价值?
  5. STP Security之BPDU Filter、BPDU Guard、Root Guard
  6. C++ Source Flowchart 自动生成C++程序流程图
  7. 号称最为简明实用的Django上手教程(下)
  8. ISM无需授权使用的无线频率
  9. php段错误coredumped,CentOS yum 段错误 (core dumped)解决方法
  10. [渝粤教育] 中国地质大学 婚姻与家庭法 复习题 (2)