您好,登錄后才能下訂單哦!
這篇文章主要講解了“pyinstaller在windows下的基本使用方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“pyinstaller在windows下的基本使用方法是什么”吧!
在windows中使用pyinstaller工具打包時會出現(xiàn)一個問題,在打包列表會看到這樣的警告信息:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal302", "gdal301", "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 文件 # 進入項目目錄,執(zhí)行命令:(還有其它參數(shù):-F等, 建議使用-D) # -D會在當(dāng)前目錄下的dist目錄中生成文件夾,處理靜態(tài)文件時比較方便 # pyi-makespec -D manage.py
3、生成.exe文件
# 在manage.spec 同級目錄執(zhí)行 # pyinstaller manage.spec
4、進入dist目錄運行項目
# 生成的exe可執(zhí)行文件 runserver --noreload # manage.exe runserver --noreload
出現(xiàn)原因:出現(xiàn)這種情況的原因主要是由于Django有些module不會自動收集,需要手動添加
解決辦法:打開生成的后綴名為.spec的文件,在hiddenimports中添加報錯中沒有的模塊
出現(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 11211: illegal multibyte sequence
上面是報錯示例,找到"PyInstaller\loader\pyimod03_importers.py"文件,打開并編譯第299行找到對應(yīng)位置添加:encoding='utf-8'(注:修改前先備份好備份,以免誤操作找不回)
出現(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\\_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文件夾復(fù)制下來放到C:\Users\ja\AppData\Local\Temp_MEI25882\下面即可
出現(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需要注釋掉,不然會報錯。
感謝各位的閱讀,以上就是“pyinstaller在windows下的基本使用方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對pyinstaller在windows下的基本使用方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。