PyInstaller運行原理及常用操作詳解

 更新時間:2020-06-14 04:45:12   作者:佚名   我要評論(0)

pyinstaller 屬于Python第三方庫,使用前需先安裝

# 首先安裝pyinstaller

pip install pyinstaller



PyInstaller生成可執行程序




# PyInstaller 工具的命

pyinstaller 屬于Python第三方庫,使用前需先安裝

# 首先安裝pyinstaller
pip install pyinstaller

PyInstaller生成可執行程序

# PyInstaller 工具的命令語法如下:

# 1、第一種
pyinstaller options ~/myproject/source/myscript.py

# 2、第一種
pyinstaller "C:\Documents and Settings\project\myscript.spec"

PyInstaller 支持的常用選項

-h,--help 查看該模塊的幫助信息
-F,-onefile

dist中產生單個的可執行文件   

eg:pyinstaller -F demo.py

-D,--onedir

產生一個目錄(包含多個文件)作為可執行程序   

eg:pyinstaller -D demo.py

-a,--ascii 不包含 Unicode 字符集支持
-d,--debug 產生 debug 版本的可執行文件
-w,--windowed,--noconsolc

指定程序運行時不顯示命令行窗口(僅對 Windows 有效)   

eg:pyinstaller -w demo.py

-c,--nowindowed,--console

指定使用命令行窗口運行程序(僅對 Windows 有效)    

eg:pyinstaller -c demo.py

-o DIR,--out=DIR 指定 spec 文件的生成目錄。如果沒有指定,則默認使用當前目錄來生成 spec 文件
-p DIR,--path=DIR

設置 Python 導入模塊的路徑(和設置 PYTHONPATH 環境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號,Linux 使用冒號)來分隔多個路徑

eg:pyinstaller -p E:\python\Lib\site-packages demo.py

-n NAME,--name=NAME 指定項目(產生的 spec)名字。如果省略該選項,那么第一個腳本的主文件名將作為 spec 的名字

1、創建一個 app 目錄,在該目錄下創建一個 入口app.py 文件

# 進入該app目錄內,執行以下語法
pyinstaller -F app.py

當生成完成后,將會在此 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。

在命令行窗口中進入 dist 目錄下,在該目錄執行 app.exe ,將會看到該程序執行結果。

注:若程序沒有可視化界面,不能雙擊執行程序

2、創建一個 app 目錄,在該目錄下創建一個 入口app.py 文件

# 進入該app目錄內,執行以下語法
pyinstaller -D app.py

執行上面命令,將看到詳細的生成過程。當生成完成后,將會在 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運行該 app.exe 程序,同樣可以看到與前一個 app.exe 程序相同的輸出結果。

3、高級用法

當有特殊需求,比如打包圖片資源文件時,就必須用到它的高級用法。

首先得了解spec文件,簡而言之,spec文件就是一份告訴pyinstaller如何打包的配置文件。
可以通過pyi-makespec demo.py來生成demo.spec文件。其內容如下:

# -*- mode: python -*-

block_cipher = None

resources = (("inspurer.db", "."), ("dlib_face_recognition_resnet_model_v1.dat", "."),
 ("shape_predictor_68_face_landmarks.dat", "."), ("close_logcat.png", ".")
 , ("open_logcat.png", "."), ("finish_register.png", "."), ("new_register.png", ".")
 , ("start_punchcard.png", "."), ("end_puncard.png", "."), ("index.png", "."))

a = Analysis(['workAttendanceSystem.py'],
       pathex=['C:\\Users\\lenovo\\Desktop\\test\\python'],
       binaries=[],
       datas=resources,
       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='workAttendanceSystem',
     debug=False,
     bootloader_ignore_signals=False,
     strip=False,
     upx=True,
     console=True )
coll = COLLECT(exe,
        a.binaries,
        a.zipfiles,
        a.datas,
        strip=False,
        upx=True,
        name='workAttendanceSystem')

對于上面這個文件,需要注意兩點:

除了resources配置是我添加修改之外,其余全是自動生成,這個配置是用來添加資源文件的。

pathex是工程的根目錄。

生成并配置好spec文件后,我們可以通過pyinstaller demo.spec來執行打包任務。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

  • 簡單介紹一下pyinstaller打包以及安全性的實現
  • 解決pyinstaller打包運行程序時出現缺少plotly庫問題
  • PyInstaller的安裝和使用的詳細步驟
  • Pyinstaller 打包發布經驗總結
  • 基于Pyinstaller打包Python程序并壓縮文件大小
  • 用python打開攝像頭并把圖像傳回qq郵箱(Pyinstaller打包)
  • pyinstaller將含有多個py文件的python程序做成exe
  • pyinstaller打包找不到文件的問題解決

相關文章

  • PyInstaller運行原理及常用操作詳解

    PyInstaller運行原理及常用操作詳解

    pyinstaller 屬于Python第三方庫,使用前需先安裝 # 首先安裝pyinstaller pip install pyinstaller PyInstaller生成可執行程序 # PyInstaller 工具的命
    2020-06-14
  • Python輕量級web框架bottle使用方法解析

    Python輕量級web框架bottle使用方法解析

    Bottle是一個輕量級的Web框架,此框架只由一個 bottle.py 文件構成,不依賴任何第三方模塊。 #!/usr/bin/env python # -*- coding:utf-8 -*- from bottle import
    2020-06-14
  • Python xpath表達式如何實現數據處理

    Python xpath表達式如何實現數據處理

    xpath表達式 1. xpath語法 <bookstore> <book> <title lang="eng">Harry Potter</title> <price>999</price> </book> <book> <title lang="eng">Learning X
    2020-06-14
  • Python Django搭建網站流程圖解

    Python Django搭建網站流程圖解

    1. 創建Django REST framework工程 1.1手動創建工程文件夾 1.2進去工程文件夾內,執行命令:django-admin startproject web_project創建工程目錄 1.3修改,添加目錄
    2020-06-14
  • 簡單了解Spring Web相關模塊運行原理

    簡單了解Spring Web相關模塊運行原理

    Spring 的Web層中有4個模塊,分別為spring-web, spring-webmvc, spring-websocket 和 spring-webmvc-portlet。 spring-web spring-web 提供了核心的Web相關功能的
    2020-06-14
  • python如何更新包

    python如何更新包

    Python安裝新包,pip是很好用的安裝工具。 pip list 可以查詢所有已安裝的包和版本。怎么知道本地安裝包的版本是否有可以更新的新版本呢?通過pip list函數可以實現
    2020-06-14
  • numpy的Fancy Indexing和array比較詳解

    numpy的Fancy Indexing和array比較詳解

    一:Fancy Indexing import numpy as np #Fancy Indexing x = np.arange(16) np.random.shuffle(x) print(x) #打印所有的元素 print(x[2])#獲取某個元素
    2020-06-14
  • python屬于解釋語言嗎

    python屬于解釋語言嗎

    Python是一門解釋型語言? Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。 如果是解釋型語言,那么生成的*.pyc文件是什么呢?c應該是
    2020-06-14
  • 使用sklearn對多分類的每個類別進行指標評價操作

    使用sklearn對多分類的每個類別進行指標評價操作

    今天晚上,筆者接到客戶的一個需要,那就是:對多分類結果的每個類別進行指標評價,也就是需要輸出每個類型的精確率(precision),召回率(recall)以及F1值(F1-s
    2020-06-14
  • python能開發游戲嗎

    python能開發游戲嗎

    python可以寫游戲,但不適合。下面我們來分析一下具體原因。 用錘子能造汽車嗎? 誰也沒法說不能吧?歷史上也確實曾經有些汽車,是用錘子造出來的。但一般來說,還是
    2020-06-14

最新評論

买宝宝用品赚钱吗 bbinApp下载 幸运28预测神测网太白 幸运赛车10号稳赚技巧 2018赌博家破人亡案例 期货配资网站配资如何止损 广东十一选五任三计划 黑龙江11元五开奖结果 股票配资广告图片 快乐双彩走势图带连线 排列3走势图表带坐标连线图 广西快三是不是福彩的 陕西快乐十分开奖走势图 福建高频十一选五下载 上海11选5真准网 杭州期货配资网 内蒙快三开奖走势图