600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 使用pyinstaller将python项目打包发布为exe可执行文件

使用pyinstaller将python项目打包发布为exe可执行文件

时间:2021-08-01 03:13:11

相关推荐

使用pyinstaller将python项目打包发布为exe可执行文件

pyinstaller模块用于将python项目打包发布成exe文件,以方便地在没有安装python环境的机器上运行。该模块使用pip install pyinstaller安装即可。

一、常用参数及含义

二、打包简单的.py文件

对一个简单.py文件,当没有依赖的其他路径下的.py文件、没有间接依赖的其他包、没有依赖的资源文件时,可使用命令pyinstaller –F xxx.py,直接打包成一个exe文件。

示例:一个简单的整数求和小程序

1) 命名calculator.py,写入内容

if __name__ == '__main__':print("求和小程序")a = input("请输入第一个数:")b = input("请输入第二个数:")print()c = int(a) + int(b)print("两数之和为:", c)input()

2) 使用命令pyinstaller -c –F calculator.py直接打包。执行完毕后,程序目录下生成了build、dist两个文件夹和一个calculator.spec文件。生成的exe文件即存在于dist文件夹中

——dist文件夹,发布目录,存放打包后的exe文件;

——build文件夹,存放一些中间过程文件,可忽略;

——.spec文件,即配置文件,用于打包复杂的python项目。

3) 双击calculator.exe,启动运行

三、由spec配置文件打包复杂的项目

实际的项目往往是复杂的,或有许多依赖的其他路径下的.py文件,或有许多间接依赖的包,或有许多涉及的资源文件,因此,需要通过spec配置文件进行打包发布。

由spec配置文件打包发布完毕后,必定会在dist中生成一个文件夹,里面不只有生成的exe文件,还有许多其他的依赖文件。此模式下,通常使用命令 pyinstaller –D xxx.spec 进行发布。

基本步骤:

s1.生成spec文件:执行命令pyi-makespec main.py,执行后生成main.spec文件(main.py是项目启动的入口文件);

s2.完善spec文件中的内容

1) Analysis的第一个列表:填入需要打包的.py文件路径,以字符串形式作为列表元素填入。

注:a.填的路径是绝对路径,目录使用双反斜杠避开转义符;

b.打包操作实质上就是将这些文件直接复制到生成的包中。

2) Analysis的datas列表:填入需要打包的非.py类型资源文件,以元组形式作为列表元素填入,路径写至最后一个目录层级。

注:a.填的路径是绝对路径,目录使用双反斜杠避开转义符;

b.打包操作实质上就是将这些文件复制到生成的包中。

3) Analysis的hiddenimports列表:填入需要直接或间接依赖的一系列包名。

猜测:在pyinstaller打包的过程中,实际上可以包含程序直接依赖的包,但无法包含间接依赖的包,因此需要在hiddenimports列表中配置导入。

写法示例

a = Analysis(['test.py','D:\\deploy\\a.py','D:\\deploy\\b.py','D:\\deploy\\c.py'],pathex=['D:\\PycharmProjects\\Test'],binaries=[],datas=[('D:\\deploy\\resourceA','resourceA'),('D:\\deploy\\resourceB','resourceB')],hiddenimports=['pandas','cython', 'sklearn','sklearn.metrics','sklearn.metrics.get_scorer','sklearn.metrics.cluster','sklearn.ensemble','sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','scipy._lib.messagestream','email.mime.message','email.mime.image', 'email.mime.multipart', 'email.mime.audio', 'email.mime.text','sklearn.neighbors._typedefs','sklearn.utils._weight_vector','sklearn.neighbors._quad_tree','win32timezone'],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)

s3.打包发布

执行命令pyinstaller –D main.spec,dist目录下的main文件夹即发布生成的项目文件。

四、问题处理

1.当双击exe文件无法看到错误信息时,可尝试通过cmd进入对应目录后命令运行:xxx.exe

2.对于hiddenimports里面不知道具体依赖的包有哪些,一个笨办法是,在cmd下执行xxx.exe,根据提示的错误信息,逐一加上缺失的包。

3.杀毒软件可能会干预,最好打包发布前退出杀毒软件。

参考

/milesma/p/12171893.html/weixin_43502949/article/details/101057825?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control/x_d/jishu/162792.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。