--- title: "讓Windows 7在MSYS2環境中編譯MicroPython" description: "讓Windows 7在MSYS2環境中編譯MicroPython" # image: https://hackmd.io/screenshot.png tags: MicroPython,MSYS2 # robots: noindex, nofollow langs: zh-Hant --- # 讓Windows 7在MSYS2環境中編譯MicroPython ## 安裝所需套件 MSYS2使用pacman(出自Arch Linux)進行軟件包管理。 所需套件: - gcc - make - readline - git - Python - Python-pip 首先,從伺服器下載新的軟體包列表資料庫。 ``` $ pacman -Sy ``` 再來,安裝所需套件。 ``` $ pacman -S msys2-devel make libreadline git python python-pip ``` > msys2-devel包含gcc及相關開發套件 > MINGW64: > - mingw-w64-x86_64-toolchain (gcc & make) > - mingw-w64-x86_64-readline > MINGW32: > - mingw-w64-i686-toolchain (gcc & make) > - mingw-w64-i686-readline 因為套件有多個鏡像伺服器,因為網路狀況可能導致無法連接一些伺服器,會顯示如下的訊息: ``` 錯誤:無法取得檔案「python-pip-20.0-1-any.pkg.tar.xz」從 sourceforge.net:Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds python-pip-20.0-1-any 1023.4 KiB 448K/s 00:02 [#####################] 100% ``` 若有顯示進度條在跑動,表示有連接到其他伺服器並正在下載套件包。 > 可以至`/etc/pacman.d/mirrorlist.**`修改,將無法連接的伺服器註解掉。 ## 創建Python虛擬環境 為了使python腳本的構建過程不會受到用戶電腦上下載並安裝的python模組和程式庫的影響,需要建立Python虛擬環境。 首先安裝virtualenv及virtualenvwrapper。 ``` $ pip install virtualenv virtualenvwrapper ``` 接著創建環境變數`WORKON_HOME`,代表要存放所有虛擬環境的路徑。 這裡指定`~/.virtualenvs`為存放的路徑。 開啟`~/.bashrc` 腳本,添加下方指令。 ``` export WORKON_HOME=~/.virtualenvs ``` 再來需要安裝virtualenvwrapper的命令,這些命令包含在腳本`virtualenvwrapper.sh`。 根據安裝路徑,該腳本位於`/usr/bin/virtualenvwrapper.sh`。 開啟`~/.bashrc` 腳本,添加下方指令。 ``` $ source /usr/bin/virtualenvwrapper.sh ``` 重新啟動MSYS2,使Shell載入新增的環境變數及virtualenvwrapper命令。 接著創建虛擬環境資料夾。 ``` $ mkdir -p $WORKON_HOME ``` 現在,可以使用`mkvirtualenv`命令來建立虛擬環境。 ``` $ mkvirtualenv --python=python3 microPython ``` `mkvirtualenv`命令在文件系統中為專案文件創建一個區域,並更新環境變量以指向新Python環境的本地安裝。 命令參數`--python=python3`告訴virtualenv使用Python3文件。`microPython`關鍵字是虛擬環境的名稱。 建立完成後將處於虛擬環境中,可以從bash shell的輸出中知道這一點。它應該在括號中顯示活動虛擬環境的名稱,如下所示: ``` (microPython) UserName@ComputerName MSYS ~ ``` > 要停用虛擬環境,您可以鍵入`deactivate`。 > 要再次啟用虛擬環境,請鍵入`source $WORKON_HOME/microPython/bin/activate`。 ## 編譯MicroPython 要編譯MicroPython的Windows版本,必須使用mingw64 Shell執行。 開啟MSYS2的mingw64 Shell,並啟用`microPython`虛擬環境。 先創建一個資料夾來存放與MicroPython相關的專案,這裡指定`~/mpy-projects`: ``` $ mkdir mpy-projects $ cd mpy-projects ``` 接著使用git將將MicroPython遠端存儲庫複製(clone)到本地計算機: ``` $ git clone --recursive https://github.com/micropython/micropython.git ``` 將目錄更改為windows構建目錄後開始編譯: ``` $ cd micropython/ports/windows $ make ``` 編譯完成後,查看micropython幫助訊息: ``` $ ./micropython -h ``` ## 執行時版本資訊 - [micropython/micropython](https://github.com/micropython/micropython) - commit 8db5d2d1f - gcc.exe (Rev2, Built by MSYS2 project) 9.2.0 - Python 3.7.3 ## 參考 - https://github.com/micropython/micropython/wiki/Getting-Started - https://github.com/micropython/micropython/issues/3361 - https://github.com/msys2/msys2/wiki/MSYS2-introduction - https://virtualenvwrapper.readthedocs.io/en/latest/index.html