真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Pyinstaller打包工具

本篇博客主要介紹的是pyinstaller在windows下的基本使用和基礎(chǔ)避坑

創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)托管服務(wù)器報價,主機托管價格性價比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

在windows中使用pyinstaller工具打包時會出現(xiàn)一個問題,在打包列表會看到這樣的警告信息:

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, try
 setting GDAL_LIBRARY_PATH in your settings.
collect_submodules: failed to import 'django.contrib.gis.sitemaps'!

這種信息不予理會就好了。

一、基本使用

1、安裝pyinstall

# pip install pyinstaller

2、查找程序需要的文件

# 制作 .spec 文件
# 進(jìn)入項目目錄,執(zhí)行命令:(還有其它參數(shù):-F等, 建議使用-D)
# -D會在當(dāng)前目錄下的dist目錄中生成文件夾,處理靜態(tài)文件時比較方便
# pyi-makespec -D manage.py

3、生成.exe文件

# 在manage.spec 同級目錄執(zhí)行
# pyinstaller manage.spec

4、進(jìn)入dist目錄運行項目

# 生成的exe可執(zhí)行文件 runserver --noreload
# manage.exe runserver --noreload

5、配置運行時瀏覽器自啟動

在配置文件中修改為如下配置即可

"""
WSGI config for bookstore project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""

import os
import time
import threading
import webbrowser

from django.core.wsgi import get_wsgi_application


def open_w():
    time.sleep(1)
    webbrowser.open_new_tab('http://127.0.0.1:8100')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookstore.settings")

application = get_wsgi_application()

t1 = threading.Thread(target=open_w)
t1.start()

二、基本錯誤處理

1、當(dāng)運行exe后出現(xiàn)提示:No module named XXX

出現(xiàn)原因:出現(xiàn)這種情況的原因主要是由于Django有些module不會自動收集,需要手動添加

解決辦法:打開生成的后綴名為.spec的文件,在hiddenimports中添加報錯中沒有的模塊

2、當(dāng)運行出現(xiàn)報錯:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte

出現(xiàn)原因:主要是windows系統(tǒng)下gbk編碼的問題

解決辦法:打開報錯信息上面一行提示的錯誤文件并跳轉(zhuǎn)到提示的錯誤行數(shù)上修改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 _bootstrap
  File "threading.py", line 936, in _bootstrap_inner
  File "traceback.py", line 167, in format_exc
  File "traceback.py", line 121, in format_exception
  File "traceback.py", line 521, in __init__
  File "traceback.py", line 533, in _load_lines
  File "traceback.py", line 533, in _load_lines
  File "traceback.py", line 533, in _load_lines
  [Previous line repeated 2 more times]
  File "traceback.py", line 531, in _load_lines
  File "traceback.py", line 285, in line
  File "linecache.py", line 16, in getline
  File "linecache.py", line 47, in getlines
  File "linecache.py", line 103, in updatecache
  File "PyInstaller\loader\pyimod03_importers.py", line 299, in get_source
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position : illegal multibyte sequence

上面是報錯示例,找到"PyInstaller\loader\pyimod03_importers.py"文件,打開并編譯第299行找到對應(yīng)位置添加:encoding='utf-8'(注:修改前先備份好備份,以免誤操作找不回)

3、當(dāng)運行出現(xiàn)這種報錯:TemplateDoesNotExist at /index/

出現(xiàn)原因:TemplateDoesNotExist 這個是因為沒有找到templates文件

解決辦法:根據(jù)錯誤提示將templates文件添加至對應(yīng)的路徑下,刷新即可。

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\\_MEI\\base_library.zip',
 'C:\\Users\\ja\\AppData\\Local\\Temp\\_MEI\\lib-dynload',
 'C:\\Users\\ja\\AppData\\Local\\Temp\\_MEI']
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\_MEI\templates\index\index.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\ja\AppData\Local\Temp\_MEI\django\contrib\admin\templates\index\index.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\ja\AppData\Local\Temp\_MEI\django\contrib\auth\templates\index\index.html (Source does not exist)

上面這種示例把template文件夾復(fù)制下來放到C:\Users\ja\AppData\Local\Temp_MEI\下面即可

4、項目缺少樣式css和js

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

解決辦法:

在settings中配置django靜態(tài)文件收集

# STATIC_ROOT = os.path.join(BASE_DIR, '文件夾路徑')

靜態(tài)文件收集命令

# python manage.py collectstatic

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

# static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

# 這句話的意思就是將STATIC_ROOT目錄的靜態(tài)文件復(fù)制一份到網(wǎng)頁 STATIC_URL路徑下

在.spec文件中修改datas,配置靜態(tài)文件打包:

# F:\Workspoace\PyWork\bookstore\statics 要打包的css,js靜態(tài)文件地址 相對應(yīng)打包到dist中的位置
# F:\Workspoace\PyWork\bookstore\templates 要打包的html文件模板地址 相對應(yīng)打包到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需要注釋掉,不然會報錯。


當(dāng)前題目:Pyinstaller打包工具
URL分享:http://weahome.cn/article/dsojsso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部