跳到主要內容

Jetson Nano 安裝Tensorflow 會踩到的坑 ImportError: cannot import name 'main'

Jetson Nano 買來一定會安裝Tensorflow, 就一定會踩到坑,
以下帶你減少採坑
安裝一些套件
  • $ sudo apt-get install libhdf5-serial-dev hdf5-tools
安裝pip3
  • $ sudo apt-get install python3-pip
安裝更多的套件
  • $ pip3 install -U pip 
  • $ sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev
  • $ sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor 
  • Traceback (most recent call last):
  •   File "/usr/bin/pip3", line 9, in <module>
  •     from pip import main
  • ImportError: cannot import name 'main'
通常安裝到這裡就會出現一個錯誤,這是一個PIP CODE的BUG 所以要改CODE,透過Nano文字編輯器來修改。
這時候如果你還沒有裝NANO,請裝NANO爛梗再來一次jetson nano沒有裝nano所以裝nano
  • sudo apt-get update
  • sudo apt-get install nano   
使用nano 來修改/usr/bin/pip3 這個文件
  • sudo nano /usr/bin/pip3                                                                                     
把原本的內容全部幹掉。然後改成下面的,或是只改紅色的地方也可以
#!/usr/bin/python3
# GENERATED BY DEBIAN
import sys
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())





     Ctrl + X 離開,按Y存檔            



重新執行就可以安裝一堆套件,這裡將會花上好幾分鐘,建議先行離開可以減少焦慮感。
  • $ sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor     
接著才是真的要安裝Tensorflow
 一行搞定
  • $ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu

測試一下,執行如下指令,使用python3 因入Tensorflow,然後列出版本

  • python3 -c 'import tensorflow as tf; print(tf.__version__)'
大概等待十秒,會得到1.13.1 代表安裝完成了
凌老師教學




留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

Raspberry PI 3 終於內建藍牙與網路晶片
這個晶片有點強大,可以同時讓Wifi 與 BLE 和 SPP (RF Com) 同時繁忙通訊都沒有問題。
Raspberry PI 如果是當成藍牙Client 連結身邊的BLE裝置,例如ibeancon、智慧手環、智慧手錶,那只要使用簡單hcitool搭配hciconfig 指令就可以達到將資料要回來,在網路關鍵字一下就可以找到如何使用hcitool 連線並要得資料。
     手機要與Raspberry PI連線的方法可以透過,wifi 或是藍牙,但是操作上使用藍牙比較直覺與簡易。但是要讓手機連線Raspberry PI,Raspberry PI上就需要將藍牙裝置當成Server,這件事情就需要一些程式碼上的撰寫。
    現在的文件說到關於如何將Raspberry PI藍牙裝置當成Server的文章並不太多,開發上總感覺困難重重,我也是在這裡停滯了好多天,不斷的搜尋解決方法,因為通起來了,資料來自網路所以也回饋給網路,讓下一個使用者減少這類問題的負擔。 不過目前這個方法未來開發資源越來越齊備可能不敷使用,但至少現在是可用的備案。
    網路上搜尋之後,整體套件如下
藍牙硬體<== BlueZ <== Nodejs(Bleno) <== Node Ble <== Node Socket  <==你的程式

我們發現藍牙要動起來通常會倚賴BlueZ的套件,好在的是最新的版作業系統已經將BlueZ提升到5.23,支援BLE了。 所以安裝BlueZ套件這件事情就可以省略。
       接著安裝Node環境 ,
http://blog.itist.tw/2016/04/using-raspberry-pi-3-to-build-eddystone-beacons-with-raspbian-jessie.html
於這篇網址提到安裝Node的快速方法,如果隨著時間推移太舊或是失效,在搜尋一下如何安裝Node即可解決。
題外話:Linux上開發要有所體悟,所有的架構都是在變動的,隨著版本的變動舊的API可能就會改變或是失效,期待不變與或是統一開發方式都是不太切合實際的想法,畢竟這不是linux的核心價值也不是在這一塊領域玩樂的人的想法,但多數的答案都可以在GOOGLE一下就可以順利解決(苦笑)。

小四軸飛行器:驅動馬達

等待陀螺儀的這段時間馬達先來了,所以我們開始測試馬達驅動系統飛行器的馬達是透過Arduino發出PWM訊號,傳送給驅動器(小型為MOS FET,大型為電調)控制馬達的轉速,達到控制飛行器。為了測試我們的驅動電路,我們先寫一個簡單的PWM控制,讓PWM輸出值越來越大,到大極限的時候,又慢慢地變小,如果我們的驅動電路可以正常運作時我們應該可以聽到馬達的聲音漸漸地變大,然後漸漸地變小。
測試馬達之前我們先學習Arduino的PWM,學習的過程當中我參考了下面的網站
http://coopermaa2nd.blogspot.tw/2011/07/6-pwm.html http://coopermaa2nd.blogspot.tw/2011/07/61-pwm-modes-part1.html 感謝Cooper Maa。



一開始我們先使用一個LED正腳接再PWM Nano的D3,然後負腳接到GND,接著寫讓PWM變大變小的程式 然後又找到如下網站 葉難:Arduino練習:呼吸燈 http://yehnan.blogspot.tw/2012/02/arduino_16.html
使用網站上的程式碼,我們可以看到燈慢慢亮起來,又慢慢的暗下去, 如果看到這樣的結果代表我們的PWM範例程是可以動作。

當呼吸燈完成了,代表我們的程式碼是沒有問題的(如果有問題就是電路的問題),接下來只要把LED腳換成馬達控制腳,就可以測試我們的驅動。
查詢了一下SI2302,由下表可以知道為什麼選用這個IC ,這張表是在某個賣場抓到的 http://taiwan.tmall.com/item/20689248199.htm?

Google play Game Service Unity 教學

Google Play Gmae Servie Unity教學 概念 我們需要由unity產生兩個資訊 1.package name (com.asssdfream.test2) 2.keystore 的SHA1 然後由 ansdrod developer console 產生兩個資訊回填到Unity中 1.資源檔 2.Client ID(客戶ID) 接著建立測試帳戶即可開始測試
詳細作法標題
1.建立Unity 專案 2.下載https://github.com/playgameservices/play-games-plugin-for-unity SDK,並加入套件 3.將專案設定成Android平台 4.為這個專案的APK