最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pyinstaller打包Pytorch框架所遇到的問(wèn)題

 更新時(shí)間:2022年03月25日 09:35:44   作者:Continue_i  
Pytorch在python界用得比較多,打包容易失敗,本文主要介紹了Pyinstaller打包Pytorch框架所遇到的問(wèn)題,文中介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

第一次嘗試用Pyinstaller打包Pytorch,碰見(jiàn)了很多問(wèn)題,耗費(fèi)了許多時(shí)間!想把這個(gè)過(guò)程中碰到的問(wèn)題與解決方法記錄一下,方便后來(lái)者。

基本流程

使用Pyinstaller打包流程可分為以下三步:

  • 安裝Pyinstaller,寫(xiě)個(gè)Hello world打包測(cè)試
  • 打包整個(gè)項(xiàng)目,在本機(jī)上調(diào)試生成exe
  • 將exe拷貝到新電腦上,測(cè)試和調(diào)試

一、安裝Pyinstaller 和 測(cè)試Hello World

使用Pycharm打開(kāi)項(xiàng)目,點(diǎn)擊Terminal,輸入以下命令:

pip install pyinstaller

請(qǐng)確保Terminal所在路徑為項(xiàng)目根目錄,以免在后續(xù)打包過(guò)程中找不到一些模塊。圖中紅框內(nèi)(pytorch)是我的項(xiàng)目所需要的虛擬環(huán)境。

編寫(xiě)Hello World測(cè)試,新建test.py:

if __name__ == '__main__':
  print("Hello World!")
  while True:
    pass

在Terminal輸入以下命令,打包test.py:

pyinstaller -F test.py

回車(chē)運(yùn)行,開(kāi)始打包!在文件夾dist中找到test.exe程序,運(yùn)行測(cè)試,沒(méi)報(bào)錯(cuò)說(shuō)明Pyinstaller安裝成功。

二、打包整個(gè)項(xiàng)目,在本機(jī)上調(diào)試生成exe

實(shí)際的項(xiàng)目一般是多文件,打包過(guò)程遠(yuǎn)比Hello World復(fù)雜多了。打包項(xiàng)目的核心要點(diǎn)有兩個(gè):

  • 配置好.spec文件
  • 補(bǔ)齊依賴(lài)項(xiàng)

關(guān)于.spec文件配置詳見(jiàn)參考鏈接一,這里不再贅述。需要注意的是,在測(cè)試階段,打包時(shí)應(yīng)設(shè)置為-D模式,方便補(bǔ)齊dll。本文重點(diǎn)講dll及其依賴(lài)項(xiàng)的補(bǔ)齊。先安裝必備工具Dependens,通過(guò)這個(gè)工具,我們可以得到.dll文件所需要的依賴(lài)項(xiàng)。在運(yùn)行打包后的exe常常遇到以下的問(wèn)題:

這提示我們系統(tǒng)缺少caffe2_nvrtc.dll或其對(duì)應(yīng)的依賴(lài)項(xiàng)。

  • 先到對(duì)應(yīng)路徑查看caffe2_nvrtc.dll是否存在
  • 若不存在,直接在Anaconda配置環(huán)境的文件夾搜索,一般都可以找到。將找到的caffe2_nvrtc.dll復(fù)制粘貼到根目錄
  • 若存在,說(shuō)明是缺少caffe2_nvrtc.dll的依賴(lài)項(xiàng),使用Dependencies工具查看所需要的依賴(lài)項(xiàng),后補(bǔ)齊到根目錄

Dependencies的使用非常簡(jiǎn)單,直接將.dll拖進(jìn)去即可。這里以torch_python.dll舉例

可以發(fā)現(xiàn),缺少若干個(gè)dll文件,補(bǔ)齊便可。通過(guò)上述方法,依樣畫(huà)葫蘆,基本可以解決關(guān)于dll報(bào)錯(cuò)的問(wèn)題。
  但每次重新打包后,需要手動(dòng)復(fù)制粘貼dll文件,很是麻煩,通過(guò)配置.spec文件可簡(jiǎn)化操作。以記事本方式打開(kāi).spec,找到datas:

小括號(hào)內(nèi)有兩個(gè)路徑,第一個(gè)路徑'kernel32.dll'表示原始數(shù)據(jù)路徑,存放kernel32.dll的路徑;第二路徑為'.'表示目標(biāo)路徑,打包后原始數(shù)據(jù)存放的路徑。意思就是將第一路徑的東西在打包后,放在第二路徑上。需要注意的是,這邊我設(shè)置的是相對(duì)路徑,相對(duì)于.spec中的pathex

三、在新電腦上測(cè)試

我使用的是pytorch的GPU版本,在新電腦上運(yùn)行發(fā)現(xiàn)會(huì)報(bào)如下錯(cuò)誤,應(yīng)該是缺少cuda庫(kù)的緣故。

我的解決辦法簡(jiǎn)單粗暴,直接拷貝cuda包到移動(dòng)硬盤(pán)

每次到新的電腦,添加cuda到環(huán)境變量

建議在程序額外設(shè)置一個(gè)選項(xiàng),可將網(wǎng)絡(luò)切換成CPU推理,以便在其他電腦測(cè)試時(shí),即使環(huán)境未配置成功,也可通過(guò)CPU推理驗(yàn)證打包成功與否。最后,祝大家好運(yùn),打包成功那一刻是蠻喜悅的!

參考資料

到此這篇關(guān)于Pyinstaller打包Pytorch框架所遇到的問(wèn)題的文章就介紹到這了,更多相關(guān)Pyinstaller打包Pytorch 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

涟水县| 修水县| 阜城县| 东明县| 沙坪坝区| 镇坪县| 沭阳县| 静宁县| 上饶市| 哈尔滨市| 河东区| 申扎县| 平乡县| 霍林郭勒市| 宁海县| 桓台县| 玉屏| 石家庄市| 定州市| 永寿县| 汝城县| 扬州市| 日土县| 北海市| 登封市| 无棣县| 行唐县| 新宁县| 南靖县| 马尔康县| 辛集市| 抚远县| 宁国市| 汝州市| 辽源市| 依安县| 色达县| 邛崃市| 巨野县| 涿鹿县| 洪江市|