Python脚本打包成可执行文件过程解析

Python是一个脚本语言,被解释器解释执行。它的发布方式:

.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)

.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

Freezing Your Code

各种打包工具的对比如下:

PS.其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。

安装PyInstaller

对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:

pip install pyinstaller

通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):

python setup.py install

安装完后,检查安装成功与否:

pyinstaller --version

安装成功后,就可以使用下面的命令了:

  • pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。
  • pyi-archive_viewer : 查看可执行包里面的文件列表。
  • pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)
  • pyi-... : 等等。

使用PyInstaller

pyinstaller的语法:

pyinstaller [options] script [script ...] | specfile

最简单的用法,在和myscript.py同目录下执行命令:

pyinstaller mycript.py

然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyinstaller -F mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。

当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:
pyi-makespec options script [script ...]

创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:

pyinstaller specfile pyi-build specfile

PyInstaller的原理简介

PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objdump命令。

PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。

可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。

需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python实现打包成库供别的模块调用

    1.创建python项目bricewulib 2.新建test_package包并创建info1类以及print_hello方法 3.为了让包的结构再复杂点,我们再在test_package下面新建一个test_package2包并创建Info2类以及print_hello2方法(注意:这里是Info2,不是上面的Info1) 4.此时整个test_package编写完成,目录结构(test_package包包含test_package2包以及info1类,test_package2包中又包含i

  • Python基于pip实现离线打包过程详解

    新公司是内网环境,无法使用pip安装第三方资源库,在网上搜下,可以直接使用pip打包本机所安装的第三方资源库,打包成whl文件 一 进入cmd命令行 1 打包单个模块 pip download pytest -d /tmp 2 打包本机所有的包 pip freeze >requirements.txt pip download -r requirements.txt -d /tmp 或者 pip install --download /tmp/packages -r requirements.t

  • Python如何将模块打包并发布

    想要把自己开发的库分享给别人使用, 使用 pip install 命令来安装 , 需要学习如何制作一个python 安装包 一.注册pypi账号 https://pypi.org/account/register/ 二.创建setup.py和pypirc文件 setup.py模板(该文件放在项目根目录下) from os.path import abspath, dirname, join ​ from setuptools import setup, find\_packages ​ \# 获

  • 如何打包Python Web项目实现免安装一键启动的方法

    一.现状 Python 有诸多优秀的 Web 开发框架供我们使用,比如Django.Flask.Sanic.正常的情况下,我们基于这些 Web 框架开发好了网站,最终都会使用 Nginx 搭配 uWSGI 或gunicorn 将其部署在 Linux 服务器上,这样,用户就可以通过 绑定的域名或 IP 地址访问. 是的,这是正常的情况. 往往很多场景,我们面对的就不是一个正常的情况.正常的情况下一切环境的问题都不是问题,因为有运维的伙伴帮我们处理好了所有环境的问题,从Python特定版本的安装,到

  • 基于Pyinstaller打包Python程序并压缩文件大小

    这段时间应老师的要求,给实验室写了一个基于 PyQt5 的小工具.然而源码发过去人家还不要,一定要打包成可执行软件. 那就打包呗,刚好以前对 Pyinstaller 有一点接触,就用了一下这玩意.这篇博文主要记录一下基本用法和踩得一些坑. 1. 用 Pyinstaller 打包 Python 程序 首先我们需要安装 Pyinstaller: pip install pyinstaller 用 conda 也行,不过貌似最近清华的 Anaconda 源被封了,也不知道什么时候解禁. Pyinsta

  • Python脚本文件打包成可执行文件的方法

    将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装. 安装后,执行import py2exe,不报错则表示安装成功! 复制代码 代码如下: >>> import py2exe 

  • windows、linux下打包Python3程序详细方法

    最近项目中需要Python的打包,看到网上也没有很详细的资料,于是做了一些示例程序.研究了一下,Python如何在Windows和Linux上打包 背景 Python版本:3.6. Windows版本:Windows 10 家庭中文版 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202) Linux版本:centos7. Python打包工具 今天没时间研究cx_Freeze,先研究了一下PyInstaller. py2exe p

  • Python实现封装打包自己写的代码,被python import

    1.新建一个文件夹example,里面放入要打包的.py文件,以及必需的_init_.py. 代码如下: # -*- coding: utf-8 -*- """ Created on Thu Nov 1 17:04:02 2018 @author: Jo """ #!/usr/bin/env python #-*- coding:utf-8 -*- def run(): print ('This is a run package!') if __

  • Python selenium 自动化脚本打包成一个exe文件(推荐)

    目标 打包Python selenium 自动化脚本(如下run.py文件)为exe执行文件,使之可以直接在未安装python环境的windows下运行 run.py文件源码: 文件路径:D:\gongcheng 注:chromedriver.exe 文件在D:\gongcheng目录下 #!/usr/bin/python3 # encoding:utf-8 from selenium import webdriver import time as t brw = webdriver.Chrom

  • Python脚本打包成可执行文件过程解析

    Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库. 可执行文件:对于非码农用户或者一些小白用户,你让他装个Pyth

  • 将Python脚本打包成MACOSAPP程序过程

    目录 安装py2app 打开终端输入pip3命令安装py2app工具 配置setup.py setup.py内有一些app信息的配置 生成app 还在此前的目录终端下输入命令 安装py2app 打开终端输入pip3命令安装py2app工具 pip3 install py2pp 安装完成后,默认会装到/Library/Frameworks/Python.framework/Versions/3.8/bin/py2applet目录下,3.8为python3的版本号,可以自己输入以下命令检查对应的版本

  • 如何将Python脚本打包成exe应用程序介绍

    目录 前言 安装Pyinstaller 将脚本打包成exe应用程序 进阶:消除命令窗口.自定义图标 总结 前言 我们有时候会编写Python脚本来辅助我们执行一些重复的操作.但是这些脚本在实际使用中会有一些不方便: 我们通常需要进入终端或者IDE中来运行脚本(当然,有办法可以实现双击脚本文件直接运行,但这不在今天的讨论范围内). 如果把脚本迁移至其他电脑上,那么Python环境变化,比如新电脑上没有安装Python,或者缺乏该脚本所调用的包等,脚本有很大概率无法正常运行. 这时候,我们可以将脚本

  • Python程序打包成可执行文件exe详解流程

    今天给大家分享个可视化 Python 打包神器,欢迎点赞支持,文末提供技术交流群. 1. 什么是 auto-py-to-exe auto-py-to-exe 是一个用于将Python程序打包成可执行文件的图形化工具.本文就是主要介绍如何使用 auto-py-to-exe 完成 python 程序打包.auto-py-to-exe 基于 pyinstaller ,相比于 pyinstaller ,它多了 GUI 界面,用起来更为简单方便 2.安装 auto-py-to-exe 首先我们要确保我们的

  • 将Python脚本打包成exe文件

    目录 1.安装依赖 2.整合资源 3.修改脚本并测试 4.准备图标(可略过) 5.pyinstaller打包 6.结论 总结 相信很多朋友在用Python写完代码之后都迫不及待的想发给对象交流(装X),但是发源码又要求对方有对应的解释器,一般是行不通的,所以我们要把源码打包成可执行的.exe文件,方便广大用户使用. 1.安装依赖 打开命令行[开始->搜索->cmd] pip install pyinstaller 等待安装成功 2.整合资源 将代码所需要加载的文件资源[图片.因为.文档等]整合

  • 使用PyInstaller库把Python程序打包成exe

    一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库. 可执行文件:对于非码农用户或者

  • Windows下将Python文件打包成.EXE可执行文件的方法

    在使用Python做开发的时候,时不时会给自己编写了一些小工具辅助自己的工作,但是由于开发依赖环境问题,多数只能在自己电脑上运行,拿到其它电脑后就没法运行了.这显得很不方便,不符合我们的初衷,那么有没有一种什么办法可以使我们编写好的程序,可以直接在各种windows下运行的呢? 答案是:有的,说到windows大家都能想到( .exe )这个东西吧!没错,就是把Python编写的代码打包成可执行的 exe 文件,直接在系统上运行,这个问题不久完美解决了吗? 下面就来讲讲如何实现,具体如下: 安装

  • 将Python代码打包成.exe可执行文件的完整步骤

    前言 有时候我们需要将自己写的代码打包成exe文件,给别人使用需要怎么办呢?以下将讲解Python代码如何打包成.exe文件. 1. 下载pyinstaller PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux. Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理. 因为Python中有很多三方包,我们想要这些三方包也包含在里面就需要

  • 将python文件打包成EXE应用程序的方法

    相信大家都想把自己完成的项目打包成EXE应用文件,然后就可以放在桌面随时都能运行了,下面来分享利用pytinstaller这个第三方库来打包程序,既简单又快捷,我也试过用其他的方式来打包Python文件,但是都没有pyinstaller这个好用和快捷 首先我将详细的将整个操作过程写出来,你首先要安装pycharm,这个无脑的操作,就不必说了,(看完一定能学会) 打开pycharm的终端terminal,然后pip install pyinstaller(任何库都可以) 然后会出现安装日志 因为我

随机推荐