当前位置: 移动技术网 > IT编程>脚本编程>Python > python工程编译成EXE

python工程编译成EXE

2020年03月19日  | 移动技术网IT编程  | 我要评论

自杀村,河南超汇实业有限公司,朱勤生

前言

  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项。  

              

         

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网