2023年3月23日 星期四

修改 jupyterlab notebooks 起始位置

久久用一次,但常忘記,所以紀錄一下 

  1. 打開 cmd prompt,並執行 jupyter notebook --generate-config
     

  2. 會產生一個  jupyter_notebook_config.py 檔案。 也會告知你存放的路徑,類似                       D:\python\WPy64-31090\python-3.10.9.amd64\etc\jupyter\jupyter_notebook_config.py

  3. 用文字編輯器開啟它
     
  4. 尋找檔案內這行 #c.NotebookApp.notebook_dir = '' 
    移除井字號, 將單引號內輸入你想要的目錄位置,
    例如: c.NotebookApp.notebook_dir = "D:/python/notebooks/"


  5. 重新啟動 jupyter lab 後,起始位置就會改成您指定的目錄 

2023年2月20日 星期一

使用 pythonnet 呼叫群益api

 多年前曾用想要用pythonnet,來載入群益的api ,但最後失敗了。這篇純粹是出自個人好奇,還是想了解是否能用 pythonnet 來載入 dll,最近找到可以使用的步驟了,在windows下 python 可以呼叫群益api,讓熟悉 C# 的開發者,又想用 python 的人多一種選擇。

    目前使用這個方法的好處:

  1. 在 juypterlab 下,可以顯示各個 function 參數有哪些,減少一直翻手冊的時間。
  2. callback 部屬比較直覺快速,但也因此比較冗長。
  3. 熟悉 C# 的人,可以加入 C# 相關的 reference, namespace 當作 python 的模組來使用。
  4. 其他券商的 dll 檔,也有機會用這套方法來呼叫? 

    壞處:

  1. 目前遇到狀況是 callback 出現錯誤時,python沒有任何錯誤通知,除錯比較麻煩。


我的安裝環境:

  • windows 10, 
  • 我使用的是python 3.10.5 
  • visual studio 2022 (只是為了使用它的 tlbimp.exe)

前置工作

1. 用 tlbimp.exe 將 SKCOM.dll 轉成  Type library

    要先將群益的SKCOM.dll 轉成  Type library,我有安裝 visual studio 2022,利用它附帶的 comandline prompt terminal ,下指令 tlbimp.exe 將 SKCOM.dll 轉成 typelib 形式,最終產生 SKCOMLib.dll 的檔案。之後就可以輕鬆用 pythonnet 的 clr 模組取用。




2. 安裝 pythonnet

    Python.NET 模組可以讓 python 使用者無縫整合 .NET Common Language Runtime (CLR)。它讓 Python 可以跟 CLR 互動, 甚至也可以反過來將 Python 包進 .NET 裡.
    在你的 python 環境下用 pip 安裝 pythonnet 即可。詳細操作請看 pythonnet 官網


    pip install pythonnet


使用 pythonnet 的 clr 模組呼叫 SKCOMAPI