Pyinstaller打包工具的使用以及避坑_第1頁(yè)
Pyinstaller打包工具的使用以及避坑_第2頁(yè)
Pyinstaller打包工具的使用以及避坑_第3頁(yè)
Pyinstaller打包工具的使用以及避坑_第4頁(yè)
Pyinstaller打包工具的使用以及避坑_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Pyinstaller打包工具的使用以及避坑目錄一、基本使用二、基本錯(cuò)誤處理1、當(dāng)運(yùn)行exe后出現(xiàn)提示:NomodulenamedXXX2、當(dāng)運(yùn)行出現(xiàn)報(bào)錯(cuò):UnicodeDecodeError:'gbk'codeccan'tdecodebyte0x80inposition658:illegalmultibyte3、當(dāng)運(yùn)行出現(xiàn)這種報(bào)錯(cuò):TemplateDoesNotExistat/index/4、項(xiàng)目缺少樣式css和js本篇博客主要介紹的是pyinstaller在windows下的基本使用和基礎(chǔ)避坑

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

django.core.exceptions.ImproperlyConfigured:CouldnotfindtheGDALlibrary(tried"gdal302","gdal301","gdal300","gdal204","gdal203","gdal202","gdal201","gdal20").IsGDALinstalledIfitis,trysettingGDAL_LIBRARY_PATHinyoursettings.collect_submodules:failedtoimport'django.contrib.gis.sitemaps'!

這種信息不予理會(huì)就好了。

一、基本使用

1、安裝pyinstall

#pipinstallpyinstaller

2、查找程序需要的文件

#制作.spec文件

#進(jìn)入項(xiàng)目目錄,執(zhí)行命令:(還有其它參數(shù):-F等,建議使用-D)

#-D會(huì)在當(dāng)前目錄下的dist目錄中生成文件夾,處理靜態(tài)文件時(shí)比較方便

#pyi-makespec-Dmanage.py

3、生成.exe文件

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

#pyinstallermanage.spec

4、進(jìn)入dist目錄運(yùn)行項(xiàng)目

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

#manage.exerunserver--noreload

二、基本錯(cuò)誤處理

1、當(dāng)運(yùn)行exe后出現(xiàn)提示:NomodulenamedXXX

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

解決辦法:打開(kāi)生成的后綴名為.spec的文件,在hiddenimports中添加報(bào)錯(cuò)中沒(méi)有的模塊

2、當(dāng)運(yùn)行出現(xiàn)報(bào)錯(cuò):UnicodeDecodeError:'gbk'codeccan'tdecodebyte0x80inposition658:illegalmultibyte

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

解決辦法:打開(kāi)報(bào)錯(cuò)信息上面一行提示的錯(cuò)誤文件并跳轉(zhuǎn)到提示的錯(cuò)誤行數(shù)上修改withopen(),在里面添加:encoding='utf-8'即可

Duringhandlingoftheaboveexception,anotherexceptionoccurred:

Traceback(mostrecentcalllast):

File"threading.py",line890,in_bootstrap

File"threading.py",line936,in_bootstrap_inner

File"traceback.py",line167,informat_exc

File"traceback.py",line121,informat_exception

File"traceback.py",line521,in__init__

File"traceback.py",line533,in_load_lines

File"traceback.py",line533,in_load_lines

File"traceback.py",line533,in_load_lines

[Previouslinerepeated2moretimes]

File"traceback.py",line531,in_load_lines

File"traceback.py",line285,inline

File"linecache.py",line16,ingetline

File"linecache.py",line47,ingetlines

File"linecache.py",line103,inupdatecache

File"PyInstaller\loader\pyimod03_importers.py",line299,inget_source

UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xa6inposition11211:illegalmultibytesequence

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

3、當(dāng)運(yùn)行出現(xiàn)這種報(bào)錯(cuò):TemplateDoesNotExistat/index/

出現(xiàn)原因:TemplateDoesNotExist這個(gè)是因?yàn)闆](méi)有找到templates文件

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

TemplateDoesNotExistat/index/

index/index.html

RequestMethod:GET

RequestURL::8000/index/

DjangoVersion:3.2.9

ExceptionType:TemplateDoesNotExist

ExceptionValue:

index/index.html

ExceptionLocation:django\template\loader.py,line19,inget_template

PythonExecutable:F:\Workspoace\PyWork\bookstore\dist\manage.exe

PythonVersion:3.7.8

PythonPath:

['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']

Servertime:Tue,16Nov202503:13:35+0000

Template-loaderpostmortem

Djangotriedloadingthesetemplates,inthisorder:

Usingenginedjango:

django.template.loaders.filesystem.Loader:C:\Users\ja\AppData\Local\Temp\_MEI25882\templates\index\index.html(Sourcedoesnotexist)

django.template.loaders.app_directories.Loader:C:\Users\ja\AppData\Local\Temp\_MEI25882\django\contrib\admin\templates\index\index.html(Sourcedoesnotexist)

django.template.loaders.app_directories.Loader:C:\Users\ja\AppData\Local\Temp\_MEI25882\django\contrib\auth\templates\index\index.html(Sourcedoesnotexist)

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

4、項(xiàng)目缺少樣式css和js

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

解決辦法:

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

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

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

#pythonmanage.pycollectstatic

然后在各個(gè)app的url中添加:

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

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

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

#F:\Workspoace\PyWork\bookstore\statics要打包的css,js靜態(tài)文件地址相對(duì)應(yīng)打包到dist中的位置

#F:\Workspoace\PyWork\bookstore\templates要打包的html文件模板地址相對(duì)應(yīng)打包到dist中的位置

#datas=[(r'F:\Workspoace\PyWork\bookstore\statics',r'.\statics'),(r'F:\Workspoace\PyWork\bookstore\templates',r'.\templates')],

注:這里配置template打包上

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論