pyinstaller简介

通过pyinstaller可以将我们的python项目打包为可执行的exe文件,有两种打包方式,一种是打包为单个文件,即在编译时使用参数**-F**,另一种是打包为一个文件夹,即在编译时使用**-D**,而**-w**参数可以让exe在运行时不打开命令行(默认是打开的状态)。

# 带命令行的打包单个文件命令
pyinstaller -F IPC_LOG_TOOL.py# 带命令行的文件夹命令
pyinstaller -D IPC_LOG_TOOL.py# 不带命令行的单个文件
pyinstaller -w -F IPC_LOG_TOOL.py# 不带命令行的文件夹命令
pyinstaller -w -D IPC_LOG_TOOL.py

pyinstaller使用-windows

上面所示的是通用版本,但是不是太灵活,想加入新的资源文件,或者每次编译时都需要输入很长的命令,

接下来说明下怎么使用spec文件,进行配置编译。

step1

首先使用通用方法做第一次编译,即用上面的方式进行编译,这时会生成一个与编译目的py文件同名但后缀为spec的文件。

打开spec文件如下所示(这已经是配置好的文件):

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['IPC_LOG_TOOL.py'],pathex=['E:\\AE_TOOLS'],binaries=[],datas=[('pyinstallerInitFile\\powerFile', '.')],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='IPC_LOG_TOOL',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,icon='E:\\AE_TOOLS\\pyinstallerInitFile\\tuya.ico')
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='IPC_LOG_TOOL')

这里仅对涉及到的几个关键变量进行解释

Analysis

第六行[‘IPC_LOG_TOOL.py’]是所有的编译目标py文件以及全部依赖文件,如果依赖文件都在同一目录下则可以不写。

pathex:项目的绝对路径

datas:添加资源文件,例如文件夹、图片、excel等等,以元组入参,第一个参数为原始路径,第二个参数为编译后的目标路径。

EXE

console:是否开启命令行,默认为true(开启)

icon:编译出exe可执行文件产物的图标。必须用绝对路径

name:EXE内和COLLECT内的name指的都是编译后的文件名,默认与编译文件同名。

step2

利用配置好的编译文件spec进行编译

pyinstaller  IPC_LOG_TOOL.spec

什么参数都不需要带,所有的配置已经在spec文件内定义好了

快捷编译-windows

在同级目录下的bat脚本编译.bat可以快速的进行编译,在编译前删除上一次生成的编译产物dist目录,编译后删除这次编译生成的build目录,双击运行即可

pyinstaller使用-linux

由于pyinstaller本身就是支持跨平台的,所以上面说的所有都是同时适用于linux和mac端,仅仅有一些不同,但是要注意配置文件spec中的路径要记得切换。

与windows平台差异

在windows平台下的cmd命令行内使用如下命令就可以直接安装:

pip install pyinstaller

然后直接使用上面提到的pyinstaller编译命令或者依赖配置文件唤起编译就可以实现实现python文件的exe可执行文件打包。

在linux和mac平台下是行不通的。

可以安装pyinstaller,但是仅是作为python的一个库存在,但是是无法实现程序的编译打包的,这是因为通过源码安装的python,默认是无法使用共享库的,也就是说python的一些重要文件是无法被包含的,可能涉及到一些第三方库,以及python每部文件,感兴趣可以百度查找下相关的文件。

暂时不知道linux原生态的python是否存在这个问题,感兴趣的可以尝试下。

本次仅说明通过源安装的高版本python的pyinstaller打包问题。

Ubuntu18.04 LTS 升级Python3.8

1、下载源码

wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz

2、解压源码并进入目录

tar -zxvf Python-3.8.6.tgz
cd Python-3.8.6

3、配置

此处给出的常见配置,想使用pyinstaller需要加额外的限制,下面会有说明。

./configure --with-ssl --prefix=/usr/local/python3

4、更新系统依赖

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev

5、编译

这里同时使用4个核心进行编译,即-j 4,可以根据自己情况进行修改数值,或取消这个参数。

sudo make -j 4

6、安装

sudo make install

7、设置为默认python环境

1、删除原来的软链接

sudo rm -rf /usr/bin/python3sudo rm -rf /usr/bin/pip3

2、新建软链接

sudo ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3sudo ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

至此,Python3.8升级完成,在命令行输入Python3,出现下述界面,说明升级成功:

Python 3.8.6 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>>

温馨提示还可以将python和pip的软链接搞掉,也链接到python3.8上哦。

linux下python使用pyinstaller

如果之前并未升级过python,那么要将上面升级的步骤全进行一遍,但是配置环境步骤使用的命令要进行扩充,使用下面的命令:

sudo ./configure --with-ssl --prefix=/usr/local/python3 --enable-shared --enable-optimizations

如果之前升级过,找到源码包重新配置、编译、安装就可以,如果安装包被删除了,下载个新的直接配置、编译、安装就ok。

但是在第一次运行时可能会报错:

./python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

此时要使用下面的命令:

find / -name libpython3.8.so.1.0


此处不使用sudo也是可以的,因为这个文件权限不高,

使用下面的命令:

cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib/

或者:

cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib64/

然后就可以按照pyinstaller正常使用的流程进行使用了。

pyinstaller说明(windows、mac、linux)相关推荐

  1. linux firefox快捷键设置,FireFox Windows MAC Linux 快捷键大全

    FireFox Windows MAC Linux 快捷键大全 OneDou 2011年5月8日 更新于 2013年06月16日 19:24 Firefox是我最喜欢的浏览器,非常的喜欢,4.0更喜欢 ...

  2. 在Windows, Mac, Linux三种系统中分别获取wifi密码的方式

    在Windows, Mac, Linux三种系统中分别获取wifi密码的方式 1. Windows netsh wlan show profile name=wifi名称 key=clear | fi ...

  3. BesLyric 全新版本下载 ( windows \ mac \ linux )

    导读 BesLyric , 一款专门制作 网易云音乐 LRC 滚动歌词的软件! 搜索.下载.制作 歌词更方便! 很荣幸地,自 beslyric 2017 年开发推出以来,得到了很多云村村民的肯定,现在 ...

  4. iPhone4S安装Linux系统,Absinthe 2.0.4 官网Windows/Mac/Linux原版下载—iPhone4S和iPad2完美越狱工具...

    还记得小杰之前介绍过的,一键实现IOS3.1-IOS5.1.1完美越狱的工具"PP越狱助手"吗?今天再放出一款iPhone4S和iPad2完美越狱工具--Absinthe. Abs ...

  5. VIM安装YouCompleteMe(Windows/Mac/Linux)

    VIM安装YouCompleteMe 前言 前一阵子一直在折腾YouCompleteMe这个插件,在Mac.Ubuntu.Windows上都试过,全部安装成功,其中 windows最费劲,今天也写出来 ...

  6. C++ 系统宏定义 windows mac linux android ios

    C++ 系统宏定义 #ifdef _WIN32//define something for Windows (32-bit and 64-bit, this part is common)#ifdef ...

  7. 各平台DNS刷新方法-Windows/Mac/Linux

    问题引出 有时候域名重新解析后,发现并不能正常打开网站,或者是404或者是旧网站,这种情况十有八九是dns未更新导致的,打开终端ping下当前网站的IP就可以看到,但是怎么样才能尽快更新本地的dns呢 ...

  8. XMind – 免费好用的开源思维导图制作编辑软件 (支持Windows/Mac/Linux)

    什么是思维导图? 上图就是一张常见的思维导图了,它是英国人托尼·巴赞发明的一种记笔记的方法,最大的特点就是直观.形象.便于记忆.此外,运用思维导图,我们能够将左右脑并用,使得我们充分发挥大脑的强悍功能 ...

  9. linux达芬奇安装教程,[正版]Windows/Mac/Linux版本-达芬奇调色软件DaVinci Resolve v11.1.2(正式版+Lite)...

    [软件介绍] 专业的达芬奇调色软件又更新啦!DaVinci Resolve v11.1.2 注:正式版和Lite 版本区别:有无降噪功能,是否支持2K以上分辨率工程 软件语言为:中文,英文,日文. 软 ...

  10. 企业补丁管理-windows/Mac/Linux打补丁

    一旦确定并评估了网络中的漏洞,下一步便是将其关闭.供应商经常发布补丁来解决其产品中的漏洞.补丁程序管理应精心计划和精心安排.如果不是这样,它将造成比其应解决的漏洞更大的危害.Vulnerability ...

最新文章

  1. 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...
  2. mysql插入性能_mysql 数据量大时插入和查询性能
  3. java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
  4. 做出仿iphone的圆角效果,以及shpe的各个属性
  5. Xamarin Android布局文件没有智能提示
  6. 【收藏】Linux 运维必备的 40 个命令总结
  7. 7-28作业直接刷一下
  8. 认识 UART 接口
  9. Windows平台下kafka环境的搭建
  10. python发送包含html、图片、附件和链接的邮件
  11. 2011年7月20日 14:32:41
  12. 从一个案例看MVC中DataContext和UpdateModel的工作原理(详解UpdateModel/SubmitChanges错误)...
  13. [转载] python中字典copy_python深度复制字典,copy方法与deepcopy方法
  14. java什么是构造方法
  15. 简述prototype, _proto_, constructor三者的关系
  16. 翻译Programming WCF Services第二版
  17. linux面试命令问题,面试常见的Linux命令及问题整理
  18. Centos7 Google输入法安装
  19. oracle增加dbf文件,oracle导入dbf文件工具下载|
  20. NB-IoT和GSM概述

热门文章

  1. Solidity Integer Overflow and Underflow
  2. 网页禁止鼠标右键复制的解决办法
  3. 【转载】AE表达式中英文对照
  4. Flutter版本 网易云音乐
  5. OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
  6. java邮件群发代码_基于jsp的邮件群发系统-JavaEE实现邮件群发系统 - java项目源码...
  7. linkerd2 php 微服务,在 Linkerd2 中进行流量拆分
  8. 【软考-中级】系统集成项目管理工程师-【2信息系统集成和服务管理】
  9. 纺织服装业如何利用技术进行数字化转型
  10. linux下hwclock不能同步时间到硬件时钟