pyinstaller打包完整python項目 pyinstaller如何給打包后的文件添加文件版本信息


項目前提描述

有個項目,是pipenv 管理的,含

有很多py文件,這些文件有的和主入口main.py同目錄,有的在python包里面

包含一些靜態資源,如圖片、readme等

需要用到有些模塊用pipenv安裝不了,如騰訊雲模塊只支持pip安裝,pypiwin32等

想要打包成綠色免安裝的exe,並且生成版本信息到exe

參考:https://blog.csdn.net/u012219045/article/details/113977724

第一步:進入項目文件夾

cd 項目文件夾

第二步:創建虛擬環境自動安裝依賴--進入虛擬環境--查看依賴

pipenv install

第三步:進入虛擬環境

這一步非常重要,如果沒有進入,那打包后運行會各種報錯,原因就是沒有把虛擬環境中模塊打包進去,模塊缺失

pipenv shell

第四步:升級pip,用pip安裝pyinstaller

python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
pip install pyinstaller

第五步:用pip安裝pipenv安裝不了的模塊或者pipenv安裝后會造成打包出錯的那些模塊到虛擬環境,如下面的這些模塊:

pip install pypiwin32
pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

第六步:確認所有模塊都安裝好了

pipenv graph

第七步:生成spec文件

我們在這一步添加各種參數,如 -D -c  --version-file=file_version_info.txt 這些,生成spec文件:

pyi-makespec -D -c --version-file=file_version_info.txt main.py

file_version_info.txt是一個文本文件,需要放在和啟動入口相同目錄下,會根據這個文件生成版本信息,該文件說明見下:

 

# UTF-8
VSVersionInfo(
  ffi=FixedFileInfo(
#filevers和prodvers應該始終是包含四個項的元組:(1、2、3、4),將不需要的項設置為0
filevers=(21, 10, 27, 0),  # 文件版本******,鼠標懸浮exe會顯示,也顯示在 詳細信息-文件版本,這個是檢測版本的依據
prodvers=(4, 6, 9, 4), # 生產商,未見顯示在哪里
mask=0x3f, # 兩個位掩碼
flags=0x0,
OS=0x4, # 為其設計此文件的操作系統,0x4-NT,無需更改它
fileType=0x1, # 文件的常規類型,0x1-該文件是一個應用程序
subtype=0x0, # 文件的功能,0x0表示該文件類型未定義
date=(0, 0) # 創建日期和時間戳
),
  kids=[
StringFileInfo(
  [
  StringTable(
    u'040904B0',
    [StringStruct(u'CompanyName', u'上海xxoo公司'), # 鼠標懸浮exe會顯示
    StringStruct(u'FileDescription', u'PC微信自動化工具'),    # 文件說明,鼠標懸浮exe會顯示,也會顯示在 詳細信息-文件說明
    StringStruct(u'FileVersion', u'1.1.0'), # 沒見哪里顯示
    StringStruct(u'InternalName', u'SVN'),
    StringStruct(u'LegalCopyright', u'上海xxoo公司版權所有'), #版權,會顯示在 詳細信息-版權
    StringStruct(u'OriginalFilename', u'小小微信機器人'), #原始文件名,會顯示在 詳細信息-原始文件名
    StringStruct(u'ProductName', u'微信機器人'),      #產品名稱,會顯示在 詳細信息-產品名稱
    StringStruct(u'ProductVersion', u'21.10.26')])    #產品版本,會顯示在 詳細信息-產品版本
  ]),
VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 語言,中文簡體
  ]
)
file_version_info.txt

第八步:修改spec文件,添加找不到的dll、添加圖片等靜態資源、修改項目名、exe名等

第九步:根據編輯后的spec打包exe

之前沒有版本信息的時候,我把-D參數放到這一步沒問題,添加 --version-file=file_version_info.txt版本信息后,就會報錯找不到版本信息的txt文件,把-D參數放到第七步就好了

pyinstaller main.spec

至此,一個pipenv管理的項目打包完畢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM