python编译成exe有意义吗_python工程编译成EXE
前言
python編譯成EXE文件后,可以獨(dú)立使用。親測(cè),一個(gè)復(fù)雜的python工程包含多個(gè)包多個(gè)模塊,可以生成exe文件。
目的
windows下將整個(gè)python工程編譯成單個(gè)EXE或者單個(gè)目錄帶EXE文件
工具
PyInstaller(windows,源代碼python3.6)
步驟項(xiàng)目根目錄下新建frozen_dir.py凍結(jié)路徑(防止編譯成exe后相對(duì)路徑找不到)
# -*- coding: utf-8 -*-
import sys
import os
# 凍結(jié)路徑,所有路徑以此為基準(zhǔn),打包后才能使用
def app_path():
"""Returns the base application path."""
if hasattr(sys, 'frozen'):
# Handles PyInstaller
return os.path.dirname(sys.executable).replace("\\", "/")
return os.path.dirname(__file__).replace("\\", "/"路徑引用
import frozen_dir
root_path = frozen_dir.app_path()
path = os.path.join(root_path, default_path)根目錄下新建入口文件main.py
from test import main if __name__ == '__main__': main()根目錄下新建編譯文件build.py
# -*- coding: utf-8 -*-
import PyInstaller.__main__
import frozen_dir
SETUP_PATH = frozen_dir.app_path()
def build():
PyInstaller.__main__.run([
'--name=%s' % "main", # 生成的exe文件名
['--onedir', '--onefile'][0], # 單個(gè)目錄 or 單個(gè)文件
'--noconfirm', # Replace output directory without asking for confimation
['--windowed', '--console'][1],
'--add-binary=./python3.dll;.', # 外部的包引入
'--add-binary=%s' % SETUP_PATH + '/config/logging.yaml;config', # 配置項(xiàng)
'--add-data=%s' % SETUP_PATH + '/config/config.ini;config', # 分號(hào)隔開,前面是添加路徑,后面是添加到哪個(gè)目錄
'--hidden-import=%s' % 'sqlalchemy.ext.baked',
'--hidden-import=%s' % 'frozen_dir', # 手動(dòng)添加包,用于處理 module not found
'main.py', # 入口文件
])
if __name__ == '__main__':
build()
5.運(yùn)行build文件,根目錄下dist/main/main.exe 為可執(zhí)行文件,雙擊可運(yùn)行。運(yùn)行閃退的話,可以cmd進(jìn)入到相關(guān)路徑運(yùn)行main.exe,缺失的包在build.py文件中添加hidden-imports項(xiàng)。
總結(jié)
以上是生活随笔為你收集整理的python编译成exe有意义吗_python工程编译成EXE的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ/微信都崩了 腾讯客服回应:系统故障
- 下一篇: c调用python第三方库_用 Pyth