2018年3月5日 星期一

安裝及測試 VPython

作者:王一哲
日期:2018/3/5




下載並安裝Python


Python 是一種直譯式的高階程式語言,功能強大且程式碼較為簡潔,個人認為比 C 語言容易上手。在 Google 上搜尋 Python,第1個搜尋結果通常會是Python 官方網站的首頁。目前最新的版本為3.6.4,下載頁面為https://www.python.org/downloads/release/python-364/ ,找到適合自己作業系統的版本下載並安裝。


Python 官方網站首頁




Python 官方網站下載頁面




選擇 Python 2.7.14 或 3.6.4?


由於這兩個版本有部分指令格式不太一樣,搭配的VPython版本也不同,需要一開始就選邊站,如果沒有特別的需求就選3.6.4。

  • 舊版:Python 2.7.14 + VPython 6
  • 新版:Python 3.X + VPython 7

目前能找到的VPython中文教學不多,最完整的教材應該是由臺灣大學物理系石明豐教授建置的網站第1個搜尋結果通常會是http://vphysics.ntu.edu.tw/,不過石教授的程式碼是採用舊版的組合,如果想參考石教授的講義學習VPython請裝舊版。




安裝 Python


找到剛才下載的安裝檔,在檔案上按滑鼠右鍵選擇以系統管理員身分執行。





建議勾選安裝視窗中最下方的選項 Add Python 3.6 to PATH,在安裝之後如果要從指令介面執行 Python 時 Windows 才能在 PATH 當中找到對應的指令。建議採用預設值安裝,選擇最上方的 Install Now。如果要手動設定 PATH 請參考這篇文章〈設定 Python 路徑〉。





安裝完成後會看到如下圖的視窗,如果有出現最底下的選項 Disable path length limit(停用路徑長度限制),建議採用這個設定,用滑鼠左鍵在這個選項上點一下即可。最後按 Close 關閉視窗。





在 Windows 開始工具列搜尋 python 可以看到以下幾個項目,選取 IDLE,開啟和 Python 直譯器同時安裝的整合式開發環境。





預設會開啟 Python Shell,可以直接在這裡輸入指令或程式碼。我們通常喜歡用 Hello World 當作第一支程式,輸入

print("Hello World")

按下 Enter 之後系統會印出 Hello World,如果可以印出 Hello World 就代表您已經成功安裝 Pyhton 開發環境。函式 print 就是用來印出文字,引號可以採用 '" ,效果相同,但是要成對。


Python Shell



但是直接在 Python Shell 當中輸入程式碼並不方便,建議將程式碼另外存成 .py 檔再用直譯器執行,這樣會比較方便。可以使用 IDLE 裡內建的編輯器,在 Python Shell 的工具列選取 File => New File 或按 Ctrl + N,輸入程式碼後再按 Ctrl + S 存檔,最後按下 F5 執行程式。


Python IDLE 編輯器畫面




存成 hello.py 後用 Python Shell 執行的畫面



另外也可以使用其它的文字編輯器,例如Notepad++,將程式碼存檔後再用 Windows 的指令介面(命令提示字元)執行。在 Windows 開始選單中搜尋 cmd,使用 cd 指令切換到放置 hello.py 的資料夾,輸入以下指令並按 Enter。但其實使用IDLE比較方便。


使用 Notepad++ 編輯 hello.py




於 Windows 的指令介面中執行 hello.py



安裝 VPython


如果在 Google 上搜尋 VPython 會找到兩個網站


如果要安裝舊版要自己從網站裡找對應的安裝檔,但我們要安裝的是新版,可以讓 Python 自動幫我們找對應的版本即可。


VPython 舊版官方網站




VPython 新版官方網站



在 Windows 開始選單上按滑鼠右鍵,選取 Windows PowerShell(系統管理員),輸入以下指令並按 Enter 自動安裝。

pip3 install vpython

在 Windows 中使用 pippip3 都可以,系統會自動搜尋需要的套件並安裝,接下來只需要等幾分鐘就完成了。如果以後要更新版本,請用

pip3 install vpython --upgrade


在 Windows 開始選單上按滑鼠右鍵出現的選單




Windows PowerShell(系統管理員)




Windows PowerShell(系統管理員) VPython 安裝完成



下載以下程式碼 3_1DMotion.py,使用 Python IDLE 開啟此檔案,按下 F5 執行,如果 Python 會自動開始您預設的瀏覽器並在新分頁中顯示以下的畫面,代表您已經正確安裝 VPython,可以開始做物理模擬動畫。


3_1DMotion.py 執行時的畫面



補充說明




建議採用 python 3.6.5 版,較新的版本似乎會出問題。如果在使用 pip3 指令安裝 VPython 時遇到以下的錯誤訊息

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

代表電腦中沒有安裝需要的編譯器,我在這個網頁找到解決方案https://wiki.python.org/moin/WindowsCompilers
基本上就是要安裝 Visual Studio,我選擇的是 Visual Studion Commnunity 2017(按此處下載),安裝時勾選開發 Python 的套件,安裝完畢後重開,應該就可以使用 pip3 安裝套件。







日期:2018/7/15



今天在 Windows 7 家用進階版 64位元版上測試安裝 VPython,我選擇的是 Python 3.6.6 64位元版,安裝完畢之後再開啟 Windows PowerShell 使用以下指令安裝 VPython

pip install vpython

安裝完畢之後即可執行動畫。另外需要注意一件事,系統預設的瀏覽器要改成 Google Chrome 或是 FireFox,千萬不要用 Internet Explorer,這樣會沒辦法顯示動畫。






HackMD 版本連結:https://hackmd.io/@yizhewang/BJ2jKMbf7

17 則留言:

  1. 請問到底要怎麼安裝vpython 7?可否給個連結?我安裝了 Visual Studio結果還是沒有用

    回覆刪除
    回覆
    1. 按照這篇文章的步驟,先安裝 Python 3.5、3.6、3.7 版皆可,安裝時記得勾選安裝視窗中最下方的選項 Add Python 3.X to PATH,再開啟 PowerShell (系統管理員) 使用 pip 指令安裝 vpython 套件,基本上這樣就能順利安裝。

      刪除
  2. 無法辨識 'pip' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑
    是否正確,然後再試一次。
    位於 行:1 字元:4
    + pip <<<< install vpython
    + CategoryInfo : ObjectNotFound: (pip:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    回覆刪除
    回覆
    1. 我猜你的作業系統應該是 Windows,通常會出現這個錯誤訊息是因為環境變數 PATH 沒有設定好,系統不知道要從什麼路徑找到 pip 指令,手動修改 PATH 的方法請看這篇 https://keejko.blogspot.com/2019/07/python.html

      刪除
  3. Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license()" for more information.
    >>> from vpython import*
    >>> box()
    Traceback (most recent call last):
    File "", line 1, in
    box()
    File "C:\Users\Osana\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vpython\vpython.py", line 1099, in __init__
    super(box, self).setup(args)
    File "C:\Users\Osana\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vpython\vpython.py", line 579, in setup
    super(standardAttributes, self).__init__()
    File "C:\Users\Osana\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vpython\vpython.py", line 236, in __init__
    from .no_notebook import _
    File "C:\Users\Osana\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vpython\no_notebook.py", line 271, in
    __w = threading.Thread(target=__server.serve_forever)
    NameError: name '__server' is not defined
    >>>
    我已經做完上述步驟了,但是沒辦法執行box()的時候沒辦法自動開啟新分頁,請問是哪裡有問題

    回覆刪除
    回覆
    1. 不好意思,之前沒有看到留言。看起來好像沒有成功引入函式庫,請問你有在 PowerShell(系統管理員) 執行過以下的指令嗎?

      pip3 install vpython

      如果有安裝過就試著升級看看

      pip3 install vpython --upgrade

      刪除
    2. 請問如果已經升級過了呢
      我跟他同狀況

      刪除
    3. 我沒有遇過這個問題,請問是使用 Anaconda 安裝 VPython 套件嗎?我在 Stackoferflow 有找到類似的問題,可以參考一下

      https://stackoverflow.com/questions/60602551/vpython-how-to-fix-nameerror-name-server-is-not-defined

      https://stackoverflow.com/questions/56145089/error-running-vpython-in-spyder-nameerror-name-gsprint-is-not-defined

      刪除
  4. 請問我安裝好了, 但卻一直找不到vpython, 如下, 是什麼原因呢?

    >>> from vpython import *
    Traceback (most recent call last):
    File "", line 1, in
    from vpython import *
    ModuleNotFoundError: No module named 'vpython'
    >>>

    回覆刪除
    回覆
    1. 我需要更詳細的資訊,例如作業系統、 Python 的版本、已安裝的套件清單、環境變數 PATH 的設定值。再不然就是移除 Python,再按照文章裡的方式和版本重新安裝。

      刪除
  5. 我的是3.9python,但照您的方法後不行,他說:pip3 :
    無法辨識 'pip3' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請
    確認路徑是否正確,然後再試一次。
    位於 線路:1 字元:1
    + pip3 install vpython
    + ~~~~
    + CategoryInfo : ObjectNotFound: (pip3:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    回覆刪除
    回覆
    1. 我剛才搜尋了一下,好像是沒有設定環境變數 PATH,我以前有寫過一篇相關的文章,網路上也有相關的文章,試試看吧!

      https://keejko.blogspot.com/2019/07/python.html

      https://dragongo.co/%E8%A7%A3%E6%B1%BA%EF%BC%9A%E7%84%A1%E6%B3%95%E8%BE%A8%E8%AD%98-pip-%E8%A9%9E%E5%BD%99%E6%98%AF%E5%90%A6%E7%82%BA-cmdlet%E3%80%81%E5%87%BD%E6%95%B8%E3%80%81%E6%8C%87%E4%BB%A4%E6%AA%94%E6%88%96/

      刪除
    2. Python 3.9 在 Windows 10 預設的路徑是如下,其中 [UserName] 是你的使用者名稱。

      C:\Users\[UserName]\AppData\Local\Programs\Python\Scripts\
      C:\Users\[UserName]\AppData\Local\Programs\Python\

      刪除
  6. 請問您這個事甚麼意思呢我打完您的程式碼然後案執行後出現這個且沒有開啟瀏覽器
    Traceback (most recent call last):
    File "c:\Users\wsxry\Desktop\vs code\王一程圓周運動.py", line 23, in
    floor = box(pos=vec(0, 0, 0), size=vec(L, 0.1*size, 0.5*L), color=color.blue)
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\vpython.py", line 1147, in __init__
    super(box, self).setup(args)
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\vpython.py", line 580, in setup
    super(standardAttributes, self).__init__()
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\vpython.py", line 241, in __init__
    from .no_notebook import _
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\no_notebook.py", line 12, in
    from autobahn.asyncio.websocket import WebSocketServerProtocol, WebSocketServerFactory
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\autobahn\asyncio\__init__.py", line 32, in
    from autobahn.asyncio.websocket import \
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\autobahn\asyncio\websocket.py", line 36, in
    from autobahn.wamp import websocket
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\autobahn\wamp\websocket.py", line 32, in
    from autobahn.websocket import protocol
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\autobahn\websocket\protocol.py", line 2533, in
    class WebSocketServerProtocol(WebSocketProtocol):
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\autobahn\websocket\protocol.py", line 2538, in WebSocketServerProtocol
    log = txaio.make_logger()
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\txaio\_unframework.py", line 41, in _throw_usage_error
    raise RuntimeError(
    RuntimeError: To use txaio, you must first select a framework with .use_twisted() or .use_asyncio()
    Exception ignored in:
    Traceback (most recent call last):
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\vpython.py", line 1140, in __del__
    super(standardAttributes, self).__del__()
    File "C:\Users\wsxry\AppData\Local\Programs\Python\Python310\lib\site-packages\vpython\vpython.py", line 322, in __del__
    cmd = {"cmd": "delete", "idx": self.idx}
    AttributeError: 'box' object has no attribute 'idx'

    回覆刪除
    回覆
    1. 我沒有遇過這個問題,這是我在 VPython 討論區上找到的資料,似乎是類似的問題

      https://groups.google.com/g/vpython-users/c/i-ZvjSoSbqk/m/_c101nlMAgAJ?pli=1

      有一位網友提出了可能的解決方案,可以參考看看。

      The fix is to install an older version of autobahn package and txaio. The steps to fix are to uninstall autobahn and txaio

      conda uninstall autobahn
      conda uninstall txaio

      or

      pip uninstall autobahn
      pip uninstall txaio

      Then install autobahn version 21.11.1

      pip install autobahn==21.11.1

      and this will install txaio version 22.2.1

      These were the versions of autobahn and txaio that existed when vpython 7.6.3 came out.

      Vpython should probably create a new release to fix this problem or to use older versions of autobahn and txaio as dependencies.

      John

      刪除
    2. 太猛了!!問題解決,謝謝

      刪除