pyinstaller將含有多個(gè)py文件的python程序做成exe
1.盡量將資源文件夾放到主文件夾下

2.pyi-makespec main.py
制作spec文件
3.spec文件在當(dāng)前文件夾下,main.spec
編輯spec文件
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py', 'monitor.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\caption_recognizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\image_recognizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\image_vectorizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\network2.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\test_fun.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area_finder.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area_include_caption_judger.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\value_vectorizer.py'],
pathex=['E:\\py_project\\test_wpf_python_msg'],
binaries=[],
datas=[('E:\\py_project\\test_wpf_python_msg\\images', 'images'),
('E:\\py_project\\test_wpf_python_msg\\network_parameters', 'network_parameters')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='main',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main')

(1)第一個(gè)列表中寫所有的py文件,與main一個(gè)文件夾的可以直接寫文件名,不一個(gè)文件夾的需要寫完整的文件路徑。
我曾試過在pathex中加入其他文件的路徑,然后其他py文件不寫完整路徑,只寫文件名,但是失敗了。
(2)datas是中的元素是tuple類型,tuple的第一個(gè)參數(shù)是python項(xiàng)目中data文件(非py文件)的路徑,
第二個(gè)參數(shù)是data在exe中保存此資源的文件夾名,要和項(xiàng)目中的文件夾名相同
(3)最重要: 因?yàn)榫幾g成exe之后的main.exe是在最外層的文件夾的。因?yàn)閙ain.py是入口文件,所以被調(diào)用的其他py文件的當(dāng)前路徑都是main.py文件的當(dāng)前路徑。所以在源代碼中就一定要把main.py放到最外層的項(xiàng)目文件夾中,這樣main.py的當(dāng)前路徑才能和main.exe的路徑保持一致,才能讓其他的py文件的當(dāng)前路徑不變,他們才可以找到data資源。
4.用之前配置的spec文件制作exe: pyinstaller -d main.spec
使用-d制作出來的exe比使用-f的快很多,因?yàn)?f把所有dll文件都打包到一個(gè)exe中了。
5.生成的exe在dist文件夾中
到此這篇關(guān)于pyinstaller將含有多個(gè)py文件的python程序做成exe的文章就介紹到這了,更多相關(guān)pyinstaller py打包成exe內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家
相關(guān)文章
python lambda表達(dá)式(匿名函數(shù))寫法解析
這篇文章主要介紹了python lambda表達(dá)式(匿名函數(shù))寫法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python網(wǎng)絡(luò)編程基于多線程實(shí)現(xiàn)多用戶全雙工聊天功能示例
這篇文章主要介紹了Python網(wǎng)絡(luò)編程基于多線程實(shí)現(xiàn)多用戶全雙工聊天功能,結(jié)合實(shí)例形式分析了Python網(wǎng)絡(luò)編程中使用多線程進(jìn)行多用戶異步通信的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04
python3 循環(huán)讀取excel文件并寫入json操作
這篇文章主要介紹了python3 循環(huán)讀取excel文件并寫入json操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python異步爬蟲requests和aiohttp中代理IP的使用
本文主要介紹了Python異步爬蟲requests和aiohttp中代理IP的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
python打開url并按指定塊讀取網(wǎng)頁(yè)內(nèi)容的方法
這篇文章主要介紹了python打開url并按指定塊讀取網(wǎng)頁(yè)內(nèi)容的方法,涉及Python操作URL及網(wǎng)頁(yè)內(nèi)容的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

