热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编程语言Pyinstaller打包工具

编程语言Pyinstaller打包工具本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础避坑在windows中使用pyinstaller工具打包时会出
编程语言Pyinstaller打包工具

本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础避坑

在windows中使用pyinstaller工具打包时会出现一个问题,在打包列表会看到这样的警告信息:

django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal302", "gdal30
1", "gdal300", "gdal204", "gdal203", "gdal202", "gdal201", "gdal20"). Is GDAL installed? If it is, trysetting GDAL_LIBRARY_PATH in your settings.
collect_submodules: failed to import 'django.contrib.gis.sitemaps'!

这种信息不予理会就好了。

一、基本使用


1、安装pyinstall

# pip install pyinstaller

2、查找程序需要的文件

# 制作 .spec 文件
# 进入项目目录,执行命令:(还有其它参数:-F等, 建议使用-D)
# -D会在当前目录下的dist目录中生成文件夹,处理静态文件时比较方便
# pyi-makespec -D manage.py

3、生成.exe文件

# 在manage.spec 同级目录执行
# pyinstaller manage.spec

4、进入dist目录运行项目

# 生成的exe可执行文件 runserver --noreload
# manage.exe runserver --noreload

二、基本错误处理


1、当运行exe后出现提示:No module named XXX

出现原因:出现这种情况的原因主要是由于Django有些module不会自动收集,需要手动添加

解决办法:打开生成的后缀名为.spec的文件,在hiddenimports中添加报错中没有的模块

2、当运行出现报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte

出现原因:主要是windows系统下gbk编码的问题

解决办法:打开报错信息上面一行提示的错误文件并跳转到提示的错误行数上修改with open(),在里面添加:encoding='utf-8' 即可

During handling of the above exception, another exception occurred:Traceback (most recent call last):File "threading.py", line 890, in _bootstrapFile "threading.py", line 936, in _bootstrap_innerFile "traceback.py", line 167, in format_excFile "traceback.py", line 121, in format_exceptionFile "traceback.py", line 521, in __init__File "traceback.py", line 533, in _load_linesFile "traceback.py", line 533, in _load_linesFile "traceback.py", line 533, in _load_lines[Previous line repeated 2 more times]File "traceback.py", line 531, in _load_linesFile "traceback.py", line 285, in lineFile "linecache.py", line 16, in getlineFile "linecache.py", line 47, in getlinesFile "linecache.py", line 103, in updatecacheFile "PyInstaller\loader\pyimod03_importers.py", line 299, in get_source
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 11211: illegal multibyte sequence

上面是报错示例,找到"PyInstaller\loader\pyimod03_importers.py"文件,打开并编译第299行找到对应位置添加:encoding='utf-8'(注:修改前先备份好备份,以免误操作找不回)

3、当运行出现这种报错:TemplateDoesNotExist at /index/

出现原因:TemplateDoesNotExist 这个是因为没有找到templates文件

解决办法:根据错误提示将templates文件添加至对应的路径下,刷新即可。

TemplateDoesNotExist at /index/
index/index.html
Request Method: GET
Request URL: http://127.0.0.1:8000/index/
Django Version: 3.2.9
Exception Type: TemplateDoesNotExist
Exception Value:
index/index.html
Exception Location: django\template\loader.py, line 19, in get_template
Python Executable: F:\Workspoace\PyWork\bookstore\dist\manage.exe
Python Version: 3.7.8
Python Path:
['C:\\Users\\ja\\AppData\\Local\\Temp\\_MEI25882\\base_library.zip','C:\\Users\\ja\\AppData\\Local\\Temp\\_MEI25882\\lib-dynload','C:\\Users\\ja\\AppData\\Local\\Temp\\_MEI25882']
Server time: Tue, 16 Nov 2021 03:13:35 +0000
Template-loader postmortem
Django tried loading these templates, in this order:Using engine django:django.template.loaders.filesystem.Loader: C:\Users\ja\AppData\Local\Temp\_MEI25882\templates\index\index.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\ja\AppData\Local\Temp\_MEI25882\django\contrib\admin\templates\index\index.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\ja\AppData\Local\Temp\_MEI25882\django\contrib\auth\templates\index\index.html (Source does not exist)

上面这种示例把template文件夹复制下来放到C:\Users\ja\AppData\Local\Temp_MEI25882\下面即可

4、项目缺少样式css和js

出现原因:Pyinstaller 能找到templates(html files文件),但不能找到css和js文件

解决办法:

在settings中配置django静态文件收集

# STATIC_ROOT = os.path.join(BASE_DIR, '文件夹路径')

静态文件收集命令

# python manage.py collectstatic

然后在各个app的url中添加:

# static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)# 这句话的意思就是将STATIC_ROOT目录的静态文件复制一份到网页 STATIC_URL路径下

在.spec文件中修改datas,配置静态文件打包:

# F:\Workspoace\PyWork\bookstore\statics 要打包的css,js静态文件地址 相对应打包到dist中的位置
# F:\Workspoace\PyWork\bookstore\templates 要打包的html文件模板地址 相对应打包到dist中的位置
# datas=[(r'F:\Workspoace\PyWork\bookstore\statics',r'.\statics'), (r'F:\Workspoace\PyWork\bookstore\templates', r'.\templates')],

注:这里配置template打包上面的第3条文件迁移就不需要做了,这里同步打包了。

这里还存在一个小问题就是django的配置文件settings中:

# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "statics"),
# ]STATIC_ROOT = os.path.join(BASE_DIR, 'statics')

STATICFILES_DIRS和STATIC_ROOT不能同时使用,如果配置了STATICFILES_DIRS需要注释掉,不然会报错。

文章来源:https://www.cnblogs.com/wylshkjj/p/15560983.html


推荐阅读
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 本文介绍了协程的概念和意义,以及使用greenlet、yield、asyncio、async/await等技术实现协程编程的方法。同时还介绍了事件循环的作用和使用方法,以及如何使用await关键字和Task对象来实现异步编程。最后还提供了一些快速上手的示例代码。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
author-avatar
我的王国1997_113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有