Python打包生成可执行文件

cx_freeze打包

安装

1、安装cx_freeze

pip install cx_freeze

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

python  cxfreeze-postinstall

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

@echo off

C:\Anaconda3\python.exe C:\Anaconda3\Scripts\cxfreeze %*

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

C:\Users\Administrator> cxfreeze --version
cxfreeze 5.1.1
Copyright (c) 2007-2017 Anthony Tuininga. All rights reserved.
Copyright (c) 2001-2006 Computronix Corporation. All rights reserved.

打包

1、打包命令

F:\Python35\python3.exe F:\Python35\Scripts\cxfreeze AviVideo.py --target-dir="./AviVideo" --target-name="AVI.exe" --include-modules="numpy" --icon=1.ico
# F:\Python35\python3.exe :python安装路径和运行程序。可缺省
# F:\Python35\Scripts\cxfreeze: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:\study\python\111\AviVideo\AviVideo.exe")
print(result.read())  

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

Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "C:\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "AviVideo.py", line 3, in <module>
    import numpy
  File "numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "numpy\core\__init__.py", line 38, in <module>
    from . import numeric
  File "numpy\core\numeric.py", line 2931, in <module>
    from . import fromnumeric
  File "numpy\core\fromnumeric.py", line 15, in <module>
    from . import _methods
ImportError: cannot import name '_methods'

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

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

Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "C:\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "AviVideo.py", line 3, in <module>
    import numpy
  File "numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "numpy\lib\__init__.py", line 24, in <module>
    from .npyio import *
  File "numpy\lib\npyio.py", line 13, in <module>
    from . import format
ImportError: cannot import name 'format'

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

pyinstaller打包

安装

1、安装pyinstaller

pip install pyinstaller

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

C:\Users\Administrator>pyinstaller
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                   [--add-data <SRC;DEST or SRC:DEST>]
                   [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                   [--hidden-import MODULENAME]
                   [--additional-hooks-dir HOOKSPATH]
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                   [--key KEY] [-d] [-s] [--noupx] [-c] [-w]
                   [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                   [--version-file FILE] [-m <FILE or XML>] [-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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335