pyinstaller说明(windows、mac、linux)
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)相关推荐
- linux firefox快捷键设置,FireFox Windows MAC Linux 快捷键大全
FireFox Windows MAC Linux 快捷键大全 OneDou 2011年5月8日 更新于 2013年06月16日 19:24 Firefox是我最喜欢的浏览器,非常的喜欢,4.0更喜欢 ...
- 在Windows, Mac, Linux三种系统中分别获取wifi密码的方式
在Windows, Mac, Linux三种系统中分别获取wifi密码的方式 1. Windows netsh wlan show profile name=wifi名称 key=clear | fi ...
- BesLyric 全新版本下载 ( windows \ mac \ linux )
导读 BesLyric , 一款专门制作 网易云音乐 LRC 滚动歌词的软件! 搜索.下载.制作 歌词更方便! 很荣幸地,自 beslyric 2017 年开发推出以来,得到了很多云村村民的肯定,现在 ...
- iPhone4S安装Linux系统,Absinthe 2.0.4 官网Windows/Mac/Linux原版下载—iPhone4S和iPad2完美越狱工具...
还记得小杰之前介绍过的,一键实现IOS3.1-IOS5.1.1完美越狱的工具"PP越狱助手"吗?今天再放出一款iPhone4S和iPad2完美越狱工具--Absinthe. Abs ...
- VIM安装YouCompleteMe(Windows/Mac/Linux)
VIM安装YouCompleteMe 前言 前一阵子一直在折腾YouCompleteMe这个插件,在Mac.Ubuntu.Windows上都试过,全部安装成功,其中 windows最费劲,今天也写出来 ...
- C++ 系统宏定义 windows mac linux android ios
C++ 系统宏定义 #ifdef _WIN32//define something for Windows (32-bit and 64-bit, this part is common)#ifdef ...
- 各平台DNS刷新方法-Windows/Mac/Linux
问题引出 有时候域名重新解析后,发现并不能正常打开网站,或者是404或者是旧网站,这种情况十有八九是dns未更新导致的,打开终端ping下当前网站的IP就可以看到,但是怎么样才能尽快更新本地的dns呢 ...
- XMind – 免费好用的开源思维导图制作编辑软件 (支持Windows/Mac/Linux)
什么是思维导图? 上图就是一张常见的思维导图了,它是英国人托尼·巴赞发明的一种记笔记的方法,最大的特点就是直观.形象.便于记忆.此外,运用思维导图,我们能够将左右脑并用,使得我们充分发挥大脑的强悍功能 ...
- linux达芬奇安装教程,[正版]Windows/Mac/Linux版本-达芬奇调色软件DaVinci Resolve v11.1.2(正式版+Lite)...
[软件介绍] 专业的达芬奇调色软件又更新啦!DaVinci Resolve v11.1.2 注:正式版和Lite 版本区别:有无降噪功能,是否支持2K以上分辨率工程 软件语言为:中文,英文,日文. 软 ...
- 企业补丁管理-windows/Mac/Linux打补丁
一旦确定并评估了网络中的漏洞,下一步便是将其关闭.供应商经常发布补丁来解决其产品中的漏洞.补丁程序管理应精心计划和精心安排.如果不是这样,它将造成比其应解决的漏洞更大的危害.Vulnerability ...
最新文章
- 组装电脑配置单报价_哪家电脑店胆子这么大,竟敢用这种方式组装电脑,客户傻得无辜!...
- mysql插入性能_mysql 数据量大时插入和查询性能
- java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
- 做出仿iphone的圆角效果,以及shpe的各个属性
- Xamarin Android布局文件没有智能提示
- 【收藏】Linux 运维必备的 40 个命令总结
- 7-28作业直接刷一下
- 认识 UART 接口
- Windows平台下kafka环境的搭建
- python发送包含html、图片、附件和链接的邮件
- 2011年7月20日 14:32:41
- 从一个案例看MVC中DataContext和UpdateModel的工作原理(详解UpdateModel/SubmitChanges错误)...
- [转载] python中字典copy_python深度复制字典,copy方法与deepcopy方法
- java什么是构造方法
- 简述prototype, _proto_, constructor三者的关系
- 翻译Programming WCF Services第二版
- linux面试命令问题,面试常见的Linux命令及问题整理
- Centos7 Google输入法安装
- oracle增加dbf文件,oracle导入dbf文件工具下载|
- NB-IoT和GSM概述
热门文章
- Solidity Integer Overflow and Underflow
- 网页禁止鼠标右键复制的解决办法
- 【转载】AE表达式中英文对照
- Flutter版本 网易云音乐
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
- java邮件群发代码_基于jsp的邮件群发系统-JavaEE实现邮件群发系统 - java项目源码...
- linkerd2 php 微服务,在 Linkerd2 中进行流量拆分
- 【软考-中级】系统集成项目管理工程师-【2信息系统集成和服务管理】
- 纺织服装业如何利用技术进行数字化转型
- linux下hwclock不能同步时间到硬件时钟