1. 程式人生 > 程式設計 >pyinstaller將含有多個py檔案的python程式做成exe

pyinstaller將含有多個py檔案的python程式做成exe

1.儘量將資原始檔夾放到主資料夾下

pyinstaller將含有多個py檔案的python程式做成exe

2.pyi-makespec main.py

製作spec檔案

3.spec檔案在當前資料夾下,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,name='main')

pyinstaller將含有多個py檔案的python程式做成exe

(1)第一個列表中寫所有的py檔案,與main一個資料夾的可以直接寫檔名,不一個資料夾的需要寫完整的檔案路徑。

我曾試過在pathex中加入其他檔案的路徑,然後其他py檔案不寫完整路徑,只寫檔名,但是失敗了。

(2)datas是中的元素是tuple型別,tuple的第一個引數是python專案中data檔案(非py檔案)的路徑,

第二個引數是data在exe中儲存此資源的資料夾名,要和專案中的資料夾名相同

(3)最重要: 因為編譯成exe之後的main.exe是在最外層的資料夾的。因為main.py是入口檔案,所以被呼叫的其他py檔案的當前路徑都是main.py檔案的當前路徑。所以在原始碼中就一定要把main.py放到最外層的專案資料夾中,這樣main.py的當前路徑才能和main.exe的路徑保持一致,才能讓其他的py檔案的當前路徑不變,他們才可以找到data資源。

4.用之前配置的spec檔案製作exe: pyinstaller -d main.spec

使用-d製作出來的exe比使用-f的快很多,因為-f把所有dll檔案都打包到一個exe中了。

5.生成的exe在dist資料夾中

到此這篇關於pyinstaller將含有多個py檔案的python程式做成exe的文章就介紹到這了,更多相關pyinstaller py打包成exe內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們