【Zemax Programming】開始使用 Python

本周的主題是: 開始使用 Python


概要

本文將介紹如何在系統(tǒng)中設(shè)置 Python,以便運(yùn)行 ZOS-API。Python 和 pywin32 是兩個(gè)必備的下載,文中開發(fā)環(huán)境以及Python模塊僅做推薦。


另外,由于 Python 3.6 與 pywin32 存在已知的兼容性問題,小編建議大家安裝 Python 3.5 以避免安裝中可能存在的問題。



基于 COM 的語(yǔ)言:pywin32

ZOS-API 基于.NET 庫(kù),需使用 win32com 與基于純 COM 編寫的語(yǔ)言,例如 Python,進(jìn)行通信。Python 的擴(kuò)展庫(kù) pywin32(https://sourceforge.net/projects/pywin32/)能夠調(diào)用 win32com。pywin32 庫(kù)有兩個(gè)版本,32 位和 64 位。使用 32 位 pywin32處理特定接口時(shí)會(huì)隨機(jī)產(chǎn)生問題,因此我們建議 Python 以及 pywin32 均使用64位版本。只要 pywin32 為64位并參考正確的 Python 架構(gòu),則 ZOS-API 能夠通過 Python 2.X 或 Python 3.X 調(diào)用。



安裝 Python

要使用 ZOS-API 與 Python,您需要安裝 Python 和 pywin32 庫(kù),才能允許 Python 與其他基于 COM 的 Windows 應(yīng)用程序通信。需要注意的是,pywin32 并不是 Python 安裝的正式部分,您需要在安裝 Python 之后安裝pywin32。最新版本的 Python 可以在https://www.python.org 中找到,pywin32 可前往 https://sourceforge.net/projects/pywin32/ 下載。


Python 有兩個(gè)主要分支,2.7.X 和 3.X,ZOS-API 可以與任一分支的 32 位或 64 位版本使用。Python 2.7.X 目前已沒有新功能更新,Python 組織僅對(duì)其安全補(bǔ)丁進(jìn)行維護(hù)。因此,如果您的系統(tǒng)中沒有安裝 Python,建議安裝 Python 3.X 版本以獲取最新功能。


Python 安裝完畢后,我們需要更改 PATH 環(huán)境變量使其包含 Python 路徑。可通過單擊開始搜索欄,在其中搜索“環(huán)境變量”(或系統(tǒng)設(shè)置>高級(jí)>啟動(dòng)與恢復(fù)>環(huán)境變量)來(lái)完成此設(shè)置。


然后單擊"New"并進(jìn)入到 Python 目錄的路徑中。單擊 OK 后退出系統(tǒng)屬性對(duì)話框。



現(xiàn)在,您將能夠打開CLI(命令行界面)窗口,并簡(jiǎn)單地輸入“python”來(lái)調(diào)用剛剛安裝的路徑中的 python 可執(zhí)行文件。


如果你安裝的 Python 為 64 位版本,則 pywin32 文件名會(huì)顯示為 pywin32-220.win-amd64-py3.x.exe,若你安裝的 Python 為 32 位版本,則 pywin32 文件名會(huì)顯示為 pywin32-220.win32-py3.4.exe。


檢查是否安裝 pywin32 模塊的方法:CMD>Python>help(‘modules’)



推薦模塊

Python 的 vanilla 版本很強(qiáng)大,Python 最好的功能之一是它的開源特性和可以將模塊導(dǎo)入到腳本中。為了在 Python 中調(diào)用類似 matlab 的功能,可以安裝 matplotlib (https://en.wikipedia.org/wiki/Matplotlib),它是一個(gè)繪圖庫(kù),基于 NumPy,是一種針對(duì) Python 的數(shù)值數(shù)學(xué)擴(kuò)展。


要安裝 matplotlib,你可以簡(jiǎn)單地使用pip,它是包含了標(biāo)準(zhǔn) Python 安裝的安裝包。注意,舊版本的 pip 不會(huì)成功安裝 matplotlib,因此你可能需要在安裝 matplotlib 之前更新 pip。如果你已經(jīng)安裝好了 Python,那么你可以跳到下面的第3步。


01 使用以下CLI命令來(lái)檢查版本

python -m pip --version


02 使用以下 CLI 命令升級(jí) pip

python -m pip install --upgrade pip


03 使用以下CLI命令安裝 matplotlib

python -m pip install matplotlib


此時(shí),你將得到如下圖所示命令窗口:




集成開發(fā)環(huán)境(IDE)

盡管能夠用任何文字編輯器來(lái)編寫Python腳本(如Notepad or Notepad++),但我們強(qiáng)烈建議用戶使用集成開發(fā)環(huán)境(IDE)來(lái)編寫Python腳本。這是因?yàn)镮DE能夠調(diào)試Python腳本并查看給定對(duì)象的屬性,類似于Visual Basic?或Matlab?中的自動(dòng)補(bǔ)全代碼。小編使用的是由Jet Brains提供的PyCharm 共享版IDE,PyCham支持代碼補(bǔ)全,語(yǔ)法問題檢查,內(nèi)置控制臺(tái),斷點(diǎn)糾錯(cuò)工具。此IDE的最新版本能夠檢查ZOS-API環(huán)境中任一對(duì)象的屬性,絕對(duì)是最好用的版本之一。


舉例來(lái)說(shuō),要檢查NSCRayTrace的屬性,可以在出現(xiàn)該對(duì)象(NSCRayTrace)代碼行的下方左側(cè)欄中(行序號(hào)旁邊)鼠標(biāo)左擊插入斷點(diǎn),再在主窗口的右擊菜單欄中選擇“Debug”(而不是選擇“Run”)。



在返回的變量列表中(Variables),可以展開變量,在下圖中展開了_prop_map_get_的屬性。



初次運(yùn)行PyCharm提示需要配置 interpreter option 時(shí),點(diǎn)擊 File>Settings>Project:>Project interpreter,再點(diǎn)擊 Add Local 來(lái)添加 Python 。




Python故障排除

任何時(shí)候當(dāng)改變 OpticStudio 或者 Python 的環(huán)境時(shí),將有可能破壞 pywin32 的封裝。每個(gè)樣本代碼在腳本的最開始都有注釋說(shuō)明幫助用戶重新注冊(cè)封裝,詳細(xì)的說(shuō)明如下:


導(dǎo)航至路徑{Python}\Lib\site-packages\win32com\gen_py\*.* 并刪除目錄(gen_py)下的所有文件。


開啟Windows “cmd”窗口(win+R>輸入“cmd”>回車)。


更改路徑到自己的文件夾{PythonEnv}\Lib\site-packages\wind32com\client\ (如,cd C:\Users\Julia.Zhang\AppData\Local\Programs\Python\Python36\Lib\site-packages\win32com\client)


輸入“python makepy.py” 并按回車。當(dāng)Select Library窗口出現(xiàn)時(shí),使用Ctrl鍵同時(shí)選擇ZOSAPI與ZOSAPI_Interfaces并點(diǎn)擊OK。



示例文件

在 OpticStudio 的安裝過程中包含了范例文件,位于安裝路徑下的 Zemax\ZOS-API Sample Code 文件夾中,其中部分文件不需要安裝其他模塊就可運(yùn)行(如01和03),但如 04 和 10 文件需要安裝NumPy和matplotlib這兩個(gè)模塊。建議運(yùn)行示例文件之前首先安裝 matplotlib 模塊。