MaxFrame推出了自動化打包服務,簡化了Python開發中第三方包的管理。該服務支援在作業開發時聲明所需的外部依賴包,在作業運行時,這些包會自動被打包並整合到作業環境中,無需手動上傳,從而減少繁瑣的打包管理工作。
注意事項
若您通過標準MaxFrame SDK(本地MaxFrame用戶端)訪問MaxFrame,需確保MaxFrame SDK版本為V0.1.0b5或以上版本。關於訪問MaxFrame詳情,請參見準備工作。
自動化打包服務說明
MaxFrame支援通過with_python_requirements函數調用自動化打包服務,文法樣本如下:
def with_python_requirements(
*requirements: str,
force_rebuild: bool = False,
prefer_binary: bool = False,
pre_release: bool = False,
): ...
上述參數說明:
requirements:必填,聲明一個或者多個外部依賴包,聲明需遵循PIP(Python包安裝器)所使用的規範,即PEP-508規範。例如:
@with_python_requirements("scikit_learn>1.0", "xgboost>1.0")force_rebuild:可選,自動化打包時若第三方包已存在,是否還重複打包。取值說明:
False(預設值):不重複打包,但產生的包將被儲存為臨時資源,並且每天都會進行清理。
True:重複打包,並強制利用PyPI鏡像的最新版本資源,並儲存為長期資源。
prefer_binary:可選,是否優先選擇存在二進位wheel的包進行打包。取值說明:
False(預設值):不優先選擇。
True:優先選擇存在二進位wheel的包進行打包。
說明
相當於pip指定--prefer-binary,將優先選擇二進位wheel的包進行打包,可能效率較高但不一定能用到最新版本。
pre_release:可選,是否允許打包包含alpha/beta階段的預發布包。
False(預設值):不允許。
True:允許。
使用樣本
自動化打包第三方包的程式碼範例如下。
from odps import ODPS
from odps.udf import annotate
import os
from odps import ODPS, options
import maxframe.dataframe as md
from maxframe import new_session
o = ODPS(
# 確保 ALIBABA_CLOUD_ACCESS_KEY_ID 環境變數設定為使用者 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境變數設定為使用者 Access Key Secret,
# 不建議直接使用AccessKey ID和 AccessKey Secret字串。
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-end-point'
)
session = new_session(o)
data = [["abcd"], ["efgh"], ["ijkl"], ["mno"]]
md_df = md.DataFrame(data, columns=["col1"])
# 調用自動化打包服務
from maxframe.udf import with_python_requirements
@with_python_requirements("jieba==0.40 cloudpickle pandas")
def process(row):
import jieba
row["col1"] = row["col1"] + "_" + jieba.__version__
return row
md_result = (
md_df.apply(
process,
axis=1,
result_type="expand",
output_type="dataframe",
dtypes=md_df.dtypes.copy(),
)
.execute()
.fetch()
)