2018年6月16日 星期六

好用的 Python 編輯器 Thonny

前天因為要幫水某焊接項鍊的鍊條, 順便將前陣子新買的六塊 D1 Mini 拿出一塊來焊一焊, 然後燒錄最新的 1.9.4 版韌體, 經測試確實為良品, D1 Mini 真是實踐物聯網的好物啊!  MicroPython 快一年沒玩了, 還真的有點生疏, 於是我找出上回在 momo 買的 "超圖解 Python 物聯網實作入門 (旗標, 趙英傑)" 來看, 當作是複習.

開卷果然有益, 我在 3-1 節讀到作者介紹的 Python 編輯器 Thonny, 雖然我慣用 EditPlus 來寫 Python 程式, 不過有新工具也不妨試用看看. Thonny 是波羅的海三小國之一愛沙尼亞 (Estonia) 的 TARTU 大學計算機科學系所研發的 Python 編輯器, 此軟體輕盈小巧, 非常適合用來開發 Python 應用, 而且此編輯器自帶 Python 3.6.4 版解譯器, 因此若電腦中還未安裝 Python, 不需要另外再安裝 Python 即可執行 Python 程式, 詳見官網介紹 :

http://thonny.org

在右上角的 Download 中可下載各平台之安裝版本, 我下載的是 Windows 最新 2.1.17 版. 安裝完成後執行畫面如下 :




可見 Thonny 有上下兩個視窗, 上方為程式編輯器, 底下是 Shell 介面. 在上方編輯好指令碼後, 按 Run/Run current script 或 F5 會先提示儲存指令檔, 然後才執行程式. 下方 Shell 介面會顯示程式逐列執行之結果. 也可以在下方 Shell 中以互動式方式執行 Python 命令.

在功能選項 Tools/Options 中可設定編輯器, 勾選 Editors 頁籤中的 "Show line numbers" 可顯示行號, 選取底下的 "Recommended maximum line" 為 80 行會在編輯框右邊第 80 行處顯示一條垂線, 避免因為程式碼超出 80 行而在列印時折回或消失 :




而 Fonts 頁籤則可設定字型與其大小 :




基本上我覺得比 EditPlus 好用, 因為它可以直接執行 Python 指令檔, 不需要另外開啟命令提示字元視窗去執行 Python 程式. 在檔案總管中點選 .py 檔案, 按滑鼠右鍵, 點選 "Edit with Thonny" 即以 Thonny 開啟此程式 :




不過要注意的是, Thonny 是在自帶的 BundledPython 環境下執行 Python 指令 (注意是 32 位元版), 並不是在本機所安裝的 Python 環境下. 此 BundledPython 安裝位置如下 :

C:\Users\user\.thonny\BundledPython36

點選 Tools/Manage packages 功能項可知, 剛剛安裝好的 Thonny 只有 pip 與 setuptools 兩個套件而已, 可透過搜尋套件名稱後進行安裝, 這些第三方套件安裝後會放在 BundledPython36 下的 Lib\site-packages 下 :

C:\Users\user\.thonny\BundledPython36\Lib\site-packages





亦即雖然本機的 Python 中已經安裝要用到的套件, 但那與 Thonny 無關, 要順利用 Thonny 執行此 Python 程式必須在 Thonny 的 Python 執行環境中安裝需要用到的套件才行. 安裝套件方式很簡單, 例如要安裝 Numpy, 就在上方文字框中輸入 Numpy, 按 Search 鍵就會幫我們找到最新的 Numpy 版本, 再按底下的 Install 鍵即可 :




安裝完成後左方的套件列表會更新, 顯示 Numpy 套件已可使用了. 此套件列表好用的地方是可以方便搜尋是否已安裝了指定之套件, 若已安裝, 按 "Upgrade" 鈕會自動檢查並安裝新版本. 若要刪除一個現有套件, 點選該套件後按 "Uninstall" 鈕即可刪除 :




安裝好 Numpy 後就可用下方的 Shell 介面測試看看 nparray 功能 :




但是在安裝技術分析套件 TA_LIB 時卻踢到鐵板, 雖然搜尋 "TA_LIB" 可順利搜尋捯此套件, 但安裝時卻出現 "error: Microsoft Visual C++ 14.0 is required" 的錯誤訊息 :




原因是 TA-Lib 是用 C++ 撰寫的, 經二次包裝成 Python 模組, 因此安裝時需要 VC++ 14.0 編譯環境, 亦即需安裝 Visual Studio 2015, 參考之前測試 TA_LIB 的這篇 :

Python Fintech 學習筆記 : 安裝技術指標套件 TA-Lib

為了 TA_LIB 卻要安裝龐大的 Visual Studio 實在太費事了, 其實只要安裝編譯過的 TA_LIB 套件之 wml 檔即可, 此 wml 檔可在加州大學網站下載 :

https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib

但要注意, Thonny 自帶的 BundledPython 3 是 32 位元版的, 因此要下載 32 位元的 wml 檔 :




將此下載之 wml 檔 TA_Lib-0.4.17-cp36-cp36m-win32.whl 放在任一個目錄例如 D:\Python\test 目錄下, 然後點選 "Tools/Open System Shell", 這會開啟一個專屬於 BundledPython 的命令提示字元視窗, 在這裡用 pip 安裝的套件會安裝到 BundledPython 裡面 :




切換目錄至存放 TA_LIB 之 wml 檔處, 然後用 pip3 install 安裝此 wml 檔 :




安裝成功後再點選 "Tools/Manage Package" 即可看到 TA_LIB 了 :




使用 Shell 介面匯入 TA_LIB 函式庫測試平滑移動平均如下 :

Python 3.6.4
>>> import talib
>>> import numpy as np
>>> close=np.random.random(100)
>>> print(talib.SMA(close, 5))




注意, Thonny 內建的 pip 模組為 9.0.1 版, 可用下列指令更新 pip 版本 :

python -m pip install --upgrade pip

You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

C:\Users\user>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365c
bebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1
Successfully installed pip-10.0.1

由於打算以後改用 Thonny 開發 Python 應用, 因此我也將全部機器學習, 資料科學, 以及網路爬蟲用的要用到的套件都安裝在 Thonny 自帶的 Python 裡面了, 詳如下表所示 :
  1. numpy : 資料科學
  2. scipy : 資料科學
  3. matplotlib : 資料科學, 圖像處理
  4. pillow : 圖像處理
  5. pandas : 資料科學
  6. scikit-learn : 機器學習
  7. keras : 機器學習
  8. tensorflow : 機器學習
  9. theano : 機器學習
  10. requests : 網路爬蟲
  11. bs4 (BeautifulSoup4) : 網路爬蟲 
  12. scrapy : 網路爬蟲  
  13. selenium : 網路爬蟲, 瀏覽器自動化
  14. django : 網頁架站
  15. tesseract : OCR 圖像識別
  16. pyautogui : GUI 軟體操作自動化
  17. pyinstaller : 執行檔打包工具
  18. ggplot : 繪圖工具
  19. bokeh : 繪圖工具
  20. plotly : 繪圖工具
  21. seaborn : 繪圖工具
  22. cltk : 自然語言處理
  23. opencv : 影像辨識
  24. twilio : 傳送簡訊
  25. pygame : 音效控制, 遊戲
我在安裝 tensorflow 時出現錯誤訊息 :

"Could not find a version that satisfies the requirement tensorflow (from versions: )
No matching distribution found for tensorflow"

根據 Tensorflow 官網說明, 目前 Tensorflow 僅支援到 Python 3.5 版而已 :

"TensorFlow only supports version 3.5.x of Python on Windows. Note that Python 3.5.x comes with the pip3 package manager, which is the program you'll use to install TensorFlow."

因此要等 Tensorflow 支援 Python 3.6 版釋出才能安裝了. 職此之故, 我只好安裝 Theano 當作 Keras 的張量運算引擎, 雖然 Theano 已於今年停止更新, 但還是可用. 

參考 :

在 Windows 中安裝 Python 機器學習套件
https://keras.io/backend/

其次, 安裝 Scrapy 時出現如下錯誤, 切到 System shell 用 pip3 install scrapy 指令安裝也是一樣, 訊息如下 :

c:\users\user\.thonny\bundledpy
thon36\include\site\python3.6\Twisted" failed with error code 1 in C:\Users\user\AppData\Local\Temp\p
ip-install-qghycg7d\Twisted\

最後去 pypi 下載 whl 檔在 System shell 安裝也是失敗 :

pip3 install Scrapy-1.5.0-py2.py3-none-any.whl

從錯誤訊息看來是在安裝 Twisted 套件時失敗, 單獨安裝 Twisted 也是失敗, 最後在 Stackoverflow 找到解決辦法, 原來要到加州大學爾灣分校網站下載 Twisted 的 mhl 檔來安裝才行 (要 32 位元版的) :

https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

到 "Tools/Open system shell" 開啟系統命令視窗以下列指令安裝 Twisted :

pip3 install Twisted-18.4.0-cp36-cp36m-win32.whl

或者在 "Tools/Package manager" 中點選左方框最上面的 <INSTALL> , 然後點中間 "Install from local file" 下的 here 超連結, 在跳出的檔案總管中選擇已下載之 Twisted 的 whl 檔案也可以. 




Twisted 單獨安裝好後再安裝 Scrapy 就成功了.

OpenCV 套件也是要到加州大學網站下載 whl 檔案來安裝 :

https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

注意, whl 檔案全部都是 32 位元版本的 (Python 3.6).


2018-06-23 補充 :

關於用 Thonny 自帶的 Python 3.6.4 跑 Tensorflow 問題有解了, 傍晚回到鄉下, 晚飯後在鄉下的電腦上安裝 Thonny 的外掛套件時發現, 原來 Thonny 可以讓我們選擇 Python 解譯器, 如果本機已經有裝 Python 解譯器也安裝了許多外掛套件的話, 其實不需要在 Thonny 自帶的 BundledPython 上再次安裝套件, 只要在 "Tools/Options/Interpreter" 頁籤中選擇本機 Python 為 Thonnny 的解譯器即可 :




如圖所示, Thonny 自帶的 Python 為較新版之 Python 3.6.4 (標 default 者), 切換至本機安裝之 較舊之 Python 3.6.1 後, 這時底下的 Shell 視窗就會顯示 Python 解譯器版本變更, 由於本機 Python 已安裝 Keras + TensorFlow, 因此可以順利跑機器學習程式碼.

切換為本機 Python 解譯器後, 開啟 "Tools/Manage package" 視窗顯示的便是本機 Python 已經安裝的套件了, 而非自帶 BundledPython 的陽春 pip 與 setuptools 了 :




不過當切換為本機 Python 後, 搜尋到欲安裝的套件後底下不會出現 Install 按鈕; 而且點選左方已安裝套件時只會顯示其版本與下載資訊, 底下不會顯示 Upgrade 與 Uninstall 按鈕, 畢竟這是系統的 Python, 不是 Thonny 自帶的 Python, 不好做任何更動 :




當切換為本機 Python 後, 欲安裝/升版/刪除本機 Python 中的套件可開啟 "Tools/Open system shell" 視窗進行操作, 這時作用的對象就是本機 Python 解譯器了.

綜上所述, 我想如果本機原來就已經有 Python 解譯器的話, 由於早已安裝許多外掛套件, 就不需要在 Thonny 的自帶 Python 中再安裝一次套件了, 直接將解譯器改為使用本機 Python 即可, 特別是跑 TensorFlow 要求 64-bit Python 3.5 的情況. 如果電腦中本來就沒有 Python 解譯器, 又沒有類似 TensorFlow 這種特殊考量, 那麼只要在 Thonny 中安裝所需套件即可, 本機不用再安裝 Python 了.