ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'--解決方法

目錄

一、問題描述

二、問題分析

三、解決方法

四、什麼是_pywrap_tensorflow_internal


一、問題描述

最近朋友裝環境時又遇到這個問題:

ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
 
 
Failed to load the native TensorFlow runtime.

這個問題也許很多人一開始會認爲是自己的CUDA或者是cuDNN的問題

二、問題分析

1.朋友的顯卡是NVIDIA GeForce 1060,環境是CUDA9.0cuDNN7.0,然後朋友運行了如下命令:

pip install tensorflow-gpu

2.報了上面提到的錯誤,查看了版本,發現版本是1.12版本。這裏博主告訴朋友版本不兼容

三、解決方法

1.卸載當前tensorflow-gpu:

pip uninstall tensorflow-gpu

2.安裝較低版本tensorfow-gpu,這裏博主安裝的是1.7版本:

pip install tensorflow-gpu==1.7

3.安裝了這個版本的tensorflow-gpu就沒有報錯了,朋友很感謝我~

四、什麼是_pywrap_tensorflow_internal

1.我們查看Python庫會發現,這個應該是和wrraper文件一樣的。查看tensorflow和python的官網和一些解決問題的網站,我們會知道:pywrap_tensorflow_internal.py 模塊被導入時,會加載_pywrap_tensorflow_internal.so動態鏈接

2.這個文件是怎麼來的呢?原來tensorflow使用bazel編譯時,swig會生成兩個wrapper文件:pywrap_tensorflow_internal.pypywrap_tensorflow_internal.cc,前者是對接上層Python調用,後者對接底層C API調用

3.什麼是swig呢?前端多語言實現需要swig包裝器,tensorflow很好的一點是它提供了這樣的一個多種語言的前端接口。swig把c/c++ 封裝成python可調用的so文動態鏈接庫,這樣我們就可以通過其他語言來完成深度學習的模型訓練和測試

4.較新版本添加了調用這個_pywrap_tensorflow_internal模塊,找不到就安裝舊一點的版本即可~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章