歡迎您光臨本站 註冊首頁

pyinstaller將含有多個py文件的python程序做成exe

←手機掃碼閱讀     kyec555 @ 2020-04-29 , reply:0


1.儘量將資源文件夾放到主文件夾下

2. pyi-makespec main.py

製作spec文件

3.spec文件在當前文件夾下,main.spec

編輯spec文件

# -*- mode: python -*- block_cipher = None a = Analysis(['main.py', 'monitor.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_modulecaption_recognizer.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduleimage_recognizer.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduleimage_vectorizer.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_module

etwork2.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduletest_fun.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduleunicom_area.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduleunicom_area_finder.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_moduleunicom_area_include_caption_judger.py', 'E:py_projecttest_wpf_python_msgsrcrecognition_modulevalue_vectorizer.py'], pathex=['E:py_projecttest_wpf_python_msg'], binaries=[], datas=[('E:py_projecttest_wpf_python_msgimages', 'images'), ('E:py_projecttest_wpf_python_msg

etwork_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)第一個列表中寫所有的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文件夾中


[kyec555 ] pyinstaller將含有多個py文件的python程序做成exe已經有255次圍觀

http://coctec.com/docs/python/shhow-post-232129.html