栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python打包生成可执行文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python打包生成可执行文件

cx_freeze打包安装

1、安装cx_freeze

pip install cx_freeze

2、生成cxfreeze.bat。在python安装文件夹下的scripts路径下运行

python  cxfreeze-postinstall

3、生成的cxfreeze.bat文件内容如下:

@echo off

C:Anaconda3python.exe C:Anaconda3scriptscxfreeze %*

4、通过cxfreeze --version命令查询cxfreeze版本,若能正确查询cx_freeze版本,即可以判断安装成功。

C:UsersAdministrator> cxfreeze --versioncxfreeze 5.1.1Copyright (c) 2007-2017 Anthony Tuininga. All rights reserved.Copyright (c) 2001-2006 Computronix Corporation. All rights reserved.
打包

1、打包命令

F:Python35python3.exe F:Python35scriptscxfreeze AviVideo.py --target-dir="./AviVideo" --target-name="AVI.exe" --include-modules="numpy" --icon=1.ico# F:Python35python3.exe :python安装路径和运行程序。可缺省# F:Python35scriptscxfreeze:cx_freeze程序路径和运行程序# AviVideo.py:需要被打包的程序 # --target-dir="./AviVideo":被打包的程序存放路径# --target-name="AVI.exe":生成的exe文件名称,该参数缺省时同被打包文件名一致。可缺省#  --include-modules="numpy":打包模块列表,可用逗号分开。可缺省# --icon=1.ico:打包的exe文件添加图标。可缺省

2、 简易打包命令:

cxfreeze AviVideo.py --target-dir="./AviVideo"# cxfreeze:打包命令# AviVideo.py:需要打包的文件# --target-dir="./AviVideo":生成exe文件和辅助模块文件存放位置
cx_freeze打包文件遇到的问题

1、正确生成exe文件后,双击闪退。查明闪退原因

# 查询闪退原因,随后根据实际情况解决相应问题。# 创建test.py文件# 修改需要执行的exe文件路径# 使用python运行该程序即可打印出闪退原因import os
result=os.popen(r"G:studypython111AviVideoAviVideo.exe")
print(result.read())

2、运行生成的exe文件闪退,报错“importError: cannot import name '_methods'”

Traceback (most recent call last):
  File "C:Anaconda3libsite-packagescx_Freezeinitscripts__startup__.py", line 14, in run    module.run()
  File "C:Anaconda3libsite-packagescx_FreezeinitscriptsConsole.py", line 26, in run
    exec(code, m.__dict__)
  File "AviVideo.py", line 3, in     import numpy
  File "numpy__init__.py", line 142, in     from . import add_newdocs
  File "numpyadd_newdocs.py", line 13, in     from numpy.lib import add_newdoc
  File "numpylib__init__.py", line 8, in     from .type_check import *
  File "numpylibtype_check.py", line 11, in     import numpy.core.numeric as _nx
  File "numpycore__init__.py", line 38, in     from . import numeric
  File "numpycorenumeric.py", line 2931, in     from . import fromnumeric
  File "numpycorefromnumeric.py", line 15, in     from . import _methods
importError: cannot import name '_methods'

原因:打包的文件里辅助模块numpy中的libnumpycore下_methods.pyc文件没有打包成功
解决办法:1、 找到python中numpy模块安装路径下的methods.cpython-35.pyc文件,例如 C:Python35Libsite-packagesnumpycore_pycache_methods.cpython-35.pyc
2、将_methods.cpython-35.pyc文件复制到生成exe文件的libnumpycore文件夹下,并重命名为_methods.pyc

2、运行生成的exe文件闪退,报错“importError: cannot import name 'format'”

Traceback (most recent call last):
  File "C:Anaconda3libsite-packagescx_Freezeinitscripts__startup__.py", line 14, in run    module.run()
  File "C:Anaconda3libsite-packagescx_FreezeinitscriptsConsole.py", line 26, in run
    exec(code, m.__dict__)
  File "AviVideo.py", line 3, in     import numpy
  File "numpy__init__.py", line 142, in     from . import add_newdocs
  File "numpyadd_newdocs.py", line 13, in     from numpy.lib import add_newdoc
  File "numpylib__init__.py", line 24, in     from .npyio import *
  File "numpylibnpyio.py", line 13, in     from . import format
importError: cannot import name 'format'

原因:打包的文件里辅助模块numpy中的libnumpylib下format.pyc文件没有打包成功
解决办法:1、 找到python中numpy模块安装路径下的format.cpython-35.pyc文件,例如 C:Python35Libsite-packagesnumpylib_pycacheformat.cpython-35.pyc
2、将format.cpython-35.pyc文件复制到生成exe文件的libnumpylib文件夹下,并重命名为format.pyc

pyinstaller打包安装

1、安装pyinstaller

pip install pyinstaller

2、通过pyinstaller -h 查询模块使用方法

C:UsersAdministrator>pyinstallerusage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                   [--add-data ]
                   [--add-binary ] [-p DIR]
                   [--hidden-import MODULENAME]
                   [--additional-hooks-dir HOOKSPATH]
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                   [--key KEY] [-d] [-s] [--noupx] [-c] [-w]
                   [-i ]
                   [--version-file FILE] [-m ] [-r RESOURCE]
                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
                   [--win-no-prefer-redirects]
                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                   [--runtime-tmpdir PATH] [--distpath DIR]
                   [--workpath WORKPATH] [-y] [--upx-dir UPX_DIR] [-a]
                   [--clean] [--log-level LEVEL]
                   scriptname [scriptname ...]......
打包

1、打包命令,生成的可执行文件在dist文件夹下。

# 所有辅助模块文件统一打包成一个exe文件。pyinstaller -F xxxx.py 

# 简易打包命令pyinstaller xxxx.py



作者:巧生于缘
链接:https://www.jianshu.com/p/cb3f0c5f42bb


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/221379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号