如何制作可以在 MaxCompute 上使用的 crcmod

之前我们介绍过在 PyODPS DataFrame 中使用三方包。对于二进制包而言,MaxCompute 要求使用包名包含 cp27-cp27m 的 Wheel 包。但对于部分长时间未更新的包,例如 oss2 依赖的 crcmod,PyPI 并未提供 Wheel 包,因而需要自行打包。本文介绍了如何使用 quay.io/pypa/manylinux1_x86_64 镜像制作可在 MaxCompute 上使用的 Wheel 包。

本文参考 https://github.com/pypa/manylinux ,quay.io/pypa/manylinux1_x86_64 镜像也是目前绝大多数 Python 项目在 Travis CI 上打包的标准工具,如有进一步的问题可研究该项目。

准备依赖项
不少包都有依赖项,例如 devel rpm 包或者其他 Python 包,在打包前需要了解该包的依赖,通常可以在 Github 中找到安装或者打包的相关信息。对于 crcmod,除 gcc 外不再有别的依赖,因而此步可略去。

修改 setup.py 并验证(建议在 Mac OS 或者 Linux 下)
较旧的 Python 包通常不支持制作 Wheel 包。具体表现为在使用 python setup.py bdist_wheel 打包时报错。如果需要制作 Wheel 包,需要修改 setup.py 以支持 Wheel 包的制作。对于一部分包,可以简单地将 distutils 中的 setup 函数替换为 setuptools 中的 setup 函数。而对于部分自定义操作较多的 setup.py,需要详细分析打包过程,这一项工作可能会很复杂,本文就不讨论了。

例如,对于 crcmod,修改 setup.py 中的

from distutils.core import setup

from setuptools import setup
即可。

修改完成后,在项目根目录执行

python setup.py bdist_wheel
如果没有报错且生成的 Wheel 包可在本地使用,说明 setup.py 已可以使用。

准备打包脚本
在项目中新建 bin 目录,并在其中创建 build-wheel.sh:

mkdir bin && vim bin/build-wheel.sh
在其中填入以下内容:

#!/bin/bash

modified from https://github.com/pypa/python-manylinux-demo/blob/master/travis/build-wheels.sh

set -e -x

Install a system package required by our library

将这里修改为安装依赖项的命令

Compile wheels

PYBIN=/opt/python/cp27-cp27m/bin

如果包根目录下有 dev-requirements.txt,取消下面的注释

"${PYBIN}/pip" install -r /io/dev-requirements.txt

"${PYBIN}/pip" wheel /io/ -w wheelhouse/

Bundle external shared libraries into the wheels

for whl in wheelhouse/*.whl; do
auditwheel repair "$whl" -w /io/wheelhouse/
done
将第一步获知的依赖项安装脚本填入此脚本,在使用 python 或 pip 时,注意使用 /opt/python/cp27-cp27m/bin 中的版本。

最后,设置执行权限

chmod a+x bin/build-wheel.sh
打包
使用 Docker 下载所需的镜像(本步需要使用 Docker,请提前安装),此后在项目根目录下打包:

docker pull quay.io/pypa/manylinux1_x86_64
docker run --rm -v pwd:/io quay.io/pypa/manylinux1_x86_64 /io/bin/build-wheel.sh
完成的 Wheel 包位于项目根目录下的 wheelhouse 目录下。

原文地址:https://blog.51cto.com/14031893/2360238

时间: 2024-11-09 03:18:10

如何制作可以在 MaxCompute 上使用的 crcmod的相关文章

登录界面制作以及设备版本号上传

#import <UIKit/UIKit.h> #import "SRWebSocket.h" @interface ViewController : UIViewController<UITextFieldDelegate,SRWebSocketDelegate> //- (IBAction)SaveLogin:(id)sender; @property (weak, nonatomic) IBOutlet UITextField *userName; @pr

MaxCompute上你从未体验过的数据分析和机器学习过程

在MaxCompute上,大家有很多种分析和机器学习的方式.大家可以用在数加的web界面编写SQL,提交SQL作业:可以用console直接执行SQL,等等等.那机器学习呢,大家需要通过PAI命令提交PAI任务,或者在xlab上操作xlib:画图呢?导出数据绘图或者使用xlab.而这一切工具,都是割裂的,你不得不在各个地方进行切换,而且,也没有传统的数据分析和机器学习的快感. 那传统的任务是怎么做的呢,使用RStudio或者jupyter notebook(前身是ipython notebook

不同种类的纸巾盒制作有哪些材质上的区别

相信在我们日常生活中,经常会有用到纸巾盒,因为随着人们生活水平的提高,在细节处也需要更近一步精进.有品位的家庭女主人即便只是挑选一个纸巾盒,你会 选择纸巾盒制作相当精致的厂家,因为一来能够在生活中体现自己的品位,二来也能够让自己的生活更加有格调.接下来我们就一起去看看,不同种类的纸巾盒制作有哪些材质上的区别?而不同材质的纸巾盒制作又有哪些注意事项? 提供一种使用方便,并且能够保证纸巾不受外界污染的纸巾盒是纸巾盒制作的初衷.其结构包括了一个底面不封闭的盒体.一个用于密封盒体底面的底座,在所述盒 体

如何在MaxCompute上处理存储在OSS上的开源格式数据

前言 MaxCompute作为使用最广泛的大数据平台,内部存储的数据以EB量级计算.巨大的数据存储量以及大规模计算下高性能数据读写的需求,对于MaxCompute提出了各种高要求及挑战.处在大数据时代,数据的来源多种多样,开源社区经过十几年的发展,百花齐放,各种各样的数据格式不断的出现. 我们的用户也在各个场景上,通过各种计算框架,积累了各种不同格式的数据.怎样将MaxCompute强大的计算能力开放给这些使用开源格式存储沉淀下来的数据,在MaxCompute上挖掘这些数据中的信息,是MaxCo

如何用PR制作火爆抖音上的上下滑动视频

最近抖音上的,上下滑动视频非常火爆,那么这样的视频是如何制作的呢?在做之前我们需要将视频准备好,不管你是下载的视频,还是录制的视频都需要准备好,还有文字内容也准备一下最好,接下来我们就来分享一下图文制作方法. https://www.macdown.com 先看一下最终的效果,如图 1. 首先打开Premiere软件,新建项目-名称(自己命名),位置(浏览找个合适的位置存放)然后点确定: 2.新建序列-点文件-新建序列-序列预设-AVCHD-1080P-AVCHD 1080P25(1920*10

数据无边界:非结构化数据在MaxCompute上的处理

这是DT(Data Technology)时代,每天有海量数据的加速产生,而每天产生的海量数据80%+是非结构化的,如何把握数据资源服务大众,激发生产力是每个互联网企业需要掌握的核心竞争力.我们的理想是MaxCompute在SQL线上实现与其它云数据(OSS, TableStore等) 的互联互通,用OSS(阿里云对外提供的海量.安全和高可靠的云存储服务)几种非结构化数据处理为范例,未来我们可以期待对各种非结构化数据的分布式处理成为可能,甚至开启气象数据.基因数据等多种大数据,建立与各种分布式系

几何画板制作点在线段上的动画方法

几何画板可以使一个点沿某条轨迹运动,使静态变动态,绘制出美观.生动的动态图形,实现动画效果.下面我们通过举例点在线段上的动画作讲解来学习几何画板点动画的制作方法. 具体的操作步骤如下: 打开几何画板,在工作区域画线段AB,在线段AB上任意画一点C. 选中点C,单击“编辑”——“操作类按钮”——“动画”,弹出对话框,单击确定后在工作区中出现了一个“动画点”按钮,可通过该按钮来控制点C在线段AB上的运动.如下图所示,右键单击“动画点”按钮,选择“属性”,可以重新设置点C的运动方向.速度及按钮标签.

网站制作为公司业绩插上腾飞的翅膀

网站,是一个企业在竞争中能够不断发展的一个重要因素,很多企业之所以能够在经济浪潮中走到现在,在很大程度上是因为有一个非常棒的网站建设,一个好的网站会使您的业绩得到提升,那么,如何进行网站制作呢,接下来,达沃斯建站 (www.hzdavos.com)为你详细介绍一下. 网站制作,您可以选择自己进行免费建站,也可以请专业的网站建设公司来寻求帮助,对他们支付一定的手续费,一般来说,请专业的公司来进行制作和推广,每年的维护费用和制作费用总共大致需要一千多元钱,这笔费用其实相对于盈利比较好的公司来说,并不

java应用程序镜像制作及在kubernetes上发布

应用程序镜像制作 准备好应用程序 [[email protected]_8_24_centos testapp]# ls Dockerfile testapp.tar.gz 编写Dockerfile [[email protected]_8_24_centos testapp]# cat Dockerfile # 基础镜像 FROM core-harbor.minminmsn.com/public/jre-centos:1.8.0_212 # 维护信息 MAINTAINER minyt <[em