目錄
四、什麼是_pywrap_tensorflow_internal
一、問題描述
最近朋友裝環境時又遇到這個問題:
ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
Failed to load the native TensorFlow runtime.
這個問題也許很多人一開始會認爲是自己的CUDA或者是cuDNN的問題
二、問題分析
1.朋友的顯卡是NVIDIA GeForce 1060,環境是CUDA9.0,cuDNN7.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.py和pywrap_tensorflow_internal.cc,前者是對接上層Python調用,後者對接底層C API調用
3.什麼是swig呢?前端多語言實現需要swig包裝器,tensorflow很好的一點是它提供了這樣的一個多種語言的前端接口。swig把c/c++ 封裝成python可調用的so文動態鏈接庫,這樣我們就可以通過其他語言來完成深度學習的模型訓練和測試
4.較新版本添加了調用這個_pywrap_tensorflow_internal模塊,找不到就安裝舊一點的版本即可~