VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python工程编译成EXE

前言

  python编译成EXE文件后,可以独立使用。亲测,一个复杂的python工程包含多个包多个模块,可以生成exe文件。

目的

   windows下将整个python工程编译成单个EXE或者单个目录带EXE文件

工具

  PyInstaller(windows,源代码python3.6)

步骤

    1. 项目根目录下新建frozen_dir.py
      1.   冻结路径(防止编译成exe后相对路径找不到)  
        复制代码
        # -*- coding: utf-8 -*-
        import sys
        import os
        # 冻结路径,所有路径以此为基准,打包后才能使用
        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("\\", "/")
        
        复制代码
    2. 路径引用
      1. import frozen_dir
        root_path = frozen_dir.app_path()
        path = os.path.join(root_path, default_path)
    3. 根目录下新建入口文件main.py

      1. from test import main
        if __name__ == '__main__':
            main()
    4. 根目录下新建编译文件build.py

      1. 复制代码
        # -*- 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],  # 单个目录 or 单个文件
                '--noconfirm',  # Replace output directory without asking for confimation
                ['--windowed', '--console'][1],
                '--add-binary=./python3.dll;.',  # 外部的包引入 
                '--add-binary=%s' % SETUP_PATH + '/config/logging.yaml;config', # 配置项
                '--add-data=%s' % SETUP_PATH + '/config/config.ini;config',  # 分号隔开,前面是添加路径,后面是添加到哪个目录
                '--hidden-import=%s' % 'sqlalchemy.ext.baked',
                '--hidden-import=%s' % 'frozen_dir',  # 手动添加包,用于处理 module not found
                'main.py',   # 入口文件
            ])
        
        
        if __name__ == '__main__':
            build()
        复制代码
    5. 运行build文件,根目录下dist/main/main.exe  为可执行文件,双击可运行。运行闪退的话,可以cmd进入到相关路径运行main.exe,缺失的包在build.py文件中添加hidden-imports项。  

            


相关教程