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()
)
文档内容是否对您有帮助?