套件的安裝、導入與使用-Python 從零開始(五)

本系列從 Python 基本的語法開始介紹,讓沒有程式背景的新手,也能開始用 Python 程式交易。如果你是進階的交易者,可以點擊連結觀看量化通其他 Python 進階文章,認識 爬蟲實用套件資產配置 等內容。

Mc 101209091709
Mc 101209091709


追蹤量化通的粉絲專頁量化通QuantPass」即時獲取實用的資源!

一、安裝套件

講到 Python,就想必絕對不能錯過 Python 廣大的套件生態圈,所以這章節就來跟大家講解怎麼安裝、導入與使用套件囉!Python 安裝套件有很多做法,這邊跟大家介紹常用的幾種做法:用 pip install 安裝以及用 Pycharm 工具安裝。

1. 用 pip install 安裝:

(1)優點:

可以跨出 Pycharm 環境直接安裝,不限定在哪個環境,甚至原生環境都可以,在雲服務(GCP, AWS)上安裝也都是使中指令居多(讓大家覺得打指令很厲害),所以未來還是得有個大概的使用概念比較好哦!

(2)缺點:

對於安裝的路徑、套件名稱、安全性等等不好驗證,之前有些套件會故意取的名稱很像,讓使用者安裝錯誤。

但功能雖然一致,可以當你在執行使用套件的時候,相關程式內的一些資料可能就會外流,這件事還一度上了資安報告中呢,所以除非很熟或是使用環境不會涉及到個人資料等等的。

否則會建議使用 Pycharm 提供的工具包去安裝就好囉!

2. 用 Pycharm工具安裝:

(1)優點:

有介面化,可以方便安裝與搜尋相關套件,也可以很方便的切換套件版本號,以及我個人覺得很重要的部分,以 Pycharm 而言,可以快速點進套件網址,確認套件到底是不是真實的套件而不是釣魚套件。

(2)缺點:

離開 Pycharm 到其他工具中就可能得適應其他使用方式,而在雲服務中就可能無法使用這模式安裝,這部分我建議可以參考 requirements.txt 的套件管理方式。

Py 101209161710
Py 101209161711

二、導入套件與使用

套件的導入比較單純,但也分成幾種不同的作法:

假設我們的 our_main.py 內有:

def run():
    print("run 1")


def run_sec():
    print("sec run")

我們想從另一份腳本內呼叫該函式就可以是:

import our_main

if __name__ == '__main__':
    run()  # 結果:  run 1
    run_sec()  # 結果:  sec run
    # 這時候兩個都可以被呼叫,因為我們整份 our_main 內的都要被呼叫
from our_main import run

if __name__ == '__main__':
    run()  # 結果:  run 1
    # 這時候我們是 call不到 run_sec() 的,因為我們指定只呼叫 run()

以下以常用的datetime套件做舉例,基本上大原則就是 from xxx(從哪個檔案)import(導入)bbb(哪個函式):

直接把整個套件包內存在的 function、class 都呼叫進來:

import datetime
print(datetime.datetime.now())

結果:

2022-06-03 17:34:12.084197

直接把整個套件包內存在的 function、class 都呼叫進來,但因為有時候套件名稱或是內部函數名稱很長,故可以用這方式縮短後續呼叫名稱。

最常見的還有 import pandas as pd 這範例:

iimport datetime as dt
print(dt.datetime.now())

結果:

2022-06-03 17:34:12.084228

一份 script 內可以有很多函式、參數、class 等等的,但當我們只需要其中一些功能時,就可以指定 Script 名稱,然後導入我們需要的功能函式就好:

from datetime import datetime
print(datetime.now())

結果:

2022-06-03 17:34:12.084228

那當然,有了上面的經驗,就更可以將每個需求都結合起來,在套件使用與程式開發上,可讀性也是一大良好的撰寫習慣,所以像是一些很長又長的很像的套件,就很適合這樣處理:

from datetime import datetime as dt
print(dt.now()) 

結果:

2022-06-03 17:34:12.084228

補充:

當需要呼叫的套件在某資料夾內:

例如: test.py(我們主要要寫的程式腳本)在主目錄底下,但是我們所需要的 def run_sec() 的函式在一份叫做 testrun.py的腳本內,而 testrun.py 在一個名為 run_func 的資料夾內:

這時候在我們的 test.py 中就要用以下這樣呼叫:

from run_func.testrun import run_sec

這樣就可以針對不同資料夾的內容做呼叫囉!

本系列會從 Python 基本的語法開始介紹,讓沒有程式背景的新手,也能開始用 Python 程式交易。如果你是進階的交易者,可以點擊連結觀看量化通其他 Python 進階文章,認識 爬蟲實用套件資產配置 等內容。

建議可以照順序閱讀,從零開始學習 Python:

三、小結:

大家可以發現不同的呼叫方式都可以達成相同的功能,未來隨著撰寫習慣、使用的套件多寡等等,

會涉及到更多各類型套件的使用,那這些好的習慣都是為了未來開發時方便囉!有任何問題或錯誤歡迎大家提出來討論!感謝收看!


量化通粉絲社群,一起討論程式交易!

加入LINE社群量化交易討論群」無壓力討論與分享!

加入臉書社團「程式交易 Taiwan」即時獲取實用的資源!

RoWay
RoWay

多年投資經驗的兩岸三地操盤手,曾任海外資產管理公司交易平台的產品經理、與各外商投資公司合作開發各式交易策略與系統。

擅長用Python執行資料蒐集、整理、分析與交易;也善於用Multicharts、MetaTrader等系統建構並回測期貨、期權、區塊鏈策略進而完成投資組合管理。

文章: 27

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *