# 使用 Anaconda 安裝 VPython
> 作者:王一哲
> 日期:2023年1月4日
## Anaconda
這是一套開放原始碼的 Python 與 R 語言發行版,官方網站為 https://www.anaconda.com/ 。它包含比較便於操作的套件管理工具,可以支援 Windows、MacOS、Linux 三種作業系統。理論上也可以安裝 VPython,以下是我的測試過程。
<br />
## Windows 10
### 安裝 Anaconda
測試環境為 Windows 10 企業版,使用的軟體為 [Anaconda + Python 3.9 + Windows 64位元版本](https://repo.anaconda.com/archive/Anaconda3-2022.10-Windows-x86_64.exe)。於下載好的 Anaconda 安裝檔上按滑鼠右鍵,選擇**以系統管理員身分執行**,安裝過程基本上就是一直按 Enter 即可。
<br />
<img height="60%" width="60%" src="https://imgur.com/esADLf3.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟1:點擊 Next 即可</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/IyL4KsA.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟2:點擊 I Agree</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/xQXgVNd.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟3:可以選擇只安裝給這個使用者 Just Me 或是所有使用者 All Users。</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/Yss77oZ.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟4:選擇安裝路徑,採用預設值即可。</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/E2FKNiI.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟5:預設已選取第2個選項,點擊 Install。</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/bzyLzqZ.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟6:安裝中,需要等一段時間。</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/LOaAvSH.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟7:安裝完畢</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/leLEUtn.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟8:不理它,點擊 Next。</div><br /><br />
<img height="60%" width="60%" src="https://imgur.com/xHS6UkR.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">Anaconda 安裝步驟9:如果勾選這兩個選項會開啟線上的說明書,點擊 Finish 完成安裝。</div><br /><br />
安裝 Anaconda 時會同時安裝很多套件,由開始選單啟動 Anaconda Prompt,使用以下指令列出已安裝的套件
```shell
conda list
```
目前安裝的 Python 版本為 3.9.13。
<br />
<img height="60%" width="60%" src="https://imgur.com/KYiVqU7.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">由開始選單啟動 Anaconda Prompt</div><br /><br />
安裝 Anaconda 時也會安裝一套名為 [Spyder](https://www.spyder-ide.org/) 的 IDE,目前安裝的 Spyder 版本為 5.2.2。按照慣例,先來個 Hello World!
<br />
<img height="60%" width="60%" src="https://imgur.com/n4VdgXT.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">由開始選單啟動 Spyder</div><br />
<img height="100%" width="100%" src="https://imgur.com/ptKXoyn.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Spyder 中執行 Hello World!</div><br /><br />
如果想要使用 Python 自帶的 IDLE,要先開啟 Anaconda Prompt,再執行指令 idle,這樣才不會在引入函式庫時遇到問題。
<br />
<img height="80%" width="80%" src="https://imgur.com/xptkpdT.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">由 Anaconda Prompt 啟動 IDLE</div><br />
<img height="60%" width="60%" src="https://imgur.com/IGSu9AD.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 IDLE 中執行 Hello World!</div><br /><br />
### 安裝 VPython
接下來要安裝 VPython 套件,以下的安裝指令是參考 [Anaconda 的官方說明書](https://anaconda.org/conda-forge/vpython)。於開始選單搜尋 Anaconda Prompt,並選擇**以系統管理員身分執行**。如果使用以下指令安裝 VPython 會出現錯誤訊息。
```shell
conda install vpython
```
<br />
<img height="80%" width="80%" src="https://imgur.com/sPiyp13.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Anaconda Prompt 中安裝 VPython 失敗</div><br /><br />
必須改用以下的指令安裝,目前安裝的 VPython 版本為 7.6.4。
```shell
conda install -c conda-forge vpython
```
<br />
<img height="80%" width="80%" src="https://imgur.com/1p9eHL5.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Anaconda Prompt 中安裝 VPython</div><br />
<img height="80%" width="80%" src="https://imgur.com/v4NTgZO.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Anaconda Prompt 中安裝 VPython 成功</div><br /><br />
接下來在 Spyder 或是 IDLE 中貼上以下的程式碼,測試是否已經正確安裝 VPython,如果能夠跑出動畫就成功了。
<br />
```python=
from vpython import *
"""
1. 參數設定, 設定變數及初始值
"""
size = 0.1 # 木塊邊長
L = 1 # 地板長度
v = 0.03 # 木塊速度
t = 0 # 時間
dt = 0.01 # 時間間隔
"""
2. 畫面設定
"""
scene = canvas(title="1D Motion", width=800, height=600, x=0, y=0, center=vec(0, 0.1, 0), background=vec(0, 0.6, 0.6))
floor = box(pos=vec(0, 0, 0), size=vec(L, 0.1*size, 0.5*L), color=color.blue)
cube = box(pos=vec(-0.5*L + 0.5*size, 0.55*size, 0), size=vec(size, size, size), color=color.red, v=vec(v, 0, 0))
"""
3. 物體運動部分, 木塊到達地板邊緣時停止執行
"""
while cube.pos.x <= 0.5*L- 0.5*size:
rate(1000)
cube.pos.x += v*dt
t += dt
print("t = ", t)
```
<br />
雖然程式碼的左側有許多的驚嘆號,顯示 Spyder 找不到名為 vpython 的套件,或是找不到名為 canvas、vec、box、color、rate 等物件,但是按 **F5** 仍然可以跑出動畫。
<img height="100%" width="100%" src="https://imgur.com/viKKe4z.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Spyder 中執行 VPython 動畫</div><br />
<img height="80%" width="80%" src="https://imgur.com/3B4xGrt.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 IDLE 中執行 VPython 動畫</div><br />
<img height="80%" width="80%" src="https://imgur.com/DeWaHXL.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">VPython 動畫執行畫面</div><br /><br />
## Ubuntu 22.04
### 安裝 Anaconda
測試環境為 Ubuntu 22.04.1 LTS (Jammy Jellyfish),使用的軟體為 [Anaconda + Python 3.9 + Linux 64位元版本](https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh)。安裝步驟主要是參考 [Anaconda 官方說明書](https://docs.anaconda.com/anaconda/install/linux/)。依照開啟指令列介面,安裝需要使用的套件
```shell
sudo apt install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
```
但是 Ubuntu 22.04 中已經安裝了大部分的套件,實際上只會再安裝 libegl1-mesa 及 libgl1-mesa-glx 兩個套件。
<br />
由以下的連結下載 [Linux 版安裝檔](https://www.anaconda.com/products/distribution#linux),我下載的版本是 [Anaconda3-2022.10-Linux-x86_64.sh](https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh),檔案大小約 738 MB,需要等一段時間。在指令列介面中先切換到存放安裝檔的資料夾中,使用以下指令檢驗檔案的完整性
```shell
shasum -a 256 Anaconda3-2022.10-Linux-x86_64.sh
```
依照[官方說明書](https://docs.anaconda.com/anaconda/install/hashes/Anaconda3-2022.10-Linux-x86_64.sh-hash/),回傳值應該是
```shell
e7ecbccbc197ebd7e1f211c59df2e37bc6959d081f2235d387e08c9026666acd
```
如果回傳值不同要重新下載檔案。
<br />
接下來使用此指令安裝 Anaconda
```shell
bash Anaconda3-2022.10-Linux-x86_64.sh
```
安裝過程基本上都採用預設值即可。安裝完成後,關閉再開啟指令列介面,輸入 spyder 或是 idle3 開啟指定的 IDE,一樣先執行一下 Hello World!。
<br />
<img height="100%" width="100%" src="https://imgur.com/orJzoqJ.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Ubuntu 22.04 的 Spyder 中執行 Hello World!</div><br />
<img height="80%" width="80%" src="https://imgur.com/Tfigx3t.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Ubuntu 22.04 的 IDLE 中執行 Hello World!</div><br /><br />
### 安裝 VPython
開啟指令列介面,輸入以下指令安裝 VPython
```shell
conda install -c conda-forge vpython
```
但是在等了很久之後會出現以下的錯誤訊息
```shell
Solving environment: Failed with initial frozen solve. Retrying with flexible solve.
Solving enviroment: Failed with repodata from current_repodata.jason, will retry with next repodata source.
```
後來我在 [Stack Overflow](https://stackoverflow.com/questions/66066895/solving-environment-failed-with-initial-frozen-solve-jupyter-notebook-anacoda) 網站上找到類似的文章,執行以下指令就能夠成功地安裝 VPython。
```shell
conda update --all --yes
conda config --add channels conda-forge
conda install -c conda-forge vpython
```
<br />
於指令列介面中開啟 Spyder 或是 IDLE,貼入測試用的 VPython 程式碼,再按 **F5** 執行,可以成功地跑出動畫。
<br />
<img height="100%" width="100%" src="https://imgur.com/LFoOqyd.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Ubuntu 22.04 的 Spyder 中執行 VPython 動畫</div><br />
<img height="100%" width="100%" src="https://imgur.com/GVOVmgf.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">於 Ubuntu 22.04 的 IDLE 中執行 VPython 動畫</div><br /><br />
## 結語
雖然 Anaconda 似乎很方便,但是我還是比較偏好只安裝需要使用的套件就好,建議初學者還是依照我的另一篇文章〈[安裝及測試 VPython](https://hackmd.io/@yizhewang/BJ2jKMbf7)〉的作法會比較順利。
<br /><br />
---
###### tags:`Python`、`VPython`