如何制作可以在 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 上打包的标准工具,如有进一步的问题可研究该项目。

  1. 准备依赖项

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

  1. 修改 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 已可以使用。

  1. 准备打包脚本

在项目中新建 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; doauditwheel repair "$whl" -w /io/wheelhouse/
done

将第一步获知的依赖项安装脚本填入此脚本,在使用 python 或 pip 时,注意使用 /opt/python/cp27-cp27m/bin 中的版本。

最后,设置执行权限

chmod a+x bin/build-wheel.sh
  1. 打包

使用 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 目录下。


#阿里云开年Hi购季#幸运抽好礼!
点此抽奖:https://www.aliyun.com/acts/product-section-2019/yq-lottery?utm_content=g_1000042901

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java解决导出word用wps打开正常,用office打开是html的标签的问题

如题&#xff0c;做导出word时遇到了这样的问题&#xff0c;用office打开是html标签&#xff0c;wps却是正常的&#xff0c;排查后发现.ftl模板里面首尾没有html标签&#xff0c;加上<html</html>>以后就好了。

云+X案例展 | 传播类:富通云腾加速联通云数字化转型步伐

本案例由富通云腾投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。在云时代背景下&#…

UI2Code智能生成Flutter代码——版面分析篇

开篇: 在《UI2CODE--整体设计》篇中&#xff0c;我们提到UI2CODE工程的第一步是版面分析&#xff0c;如果是白色的简单背景&#xff0c;我们可以像切西瓜一样&#xff0c;将图片信息切割为GUI元素。但是在实际生产过程中&#xff0c;UI的复杂度会高很多。本篇我们将围绕版面分析…

qq互动视频页面加载失败_互动案例技术分析(2)

这是该系列文章的第2篇&#xff0c;我们仍然会选择三个互动营销案例&#xff0c;从技术角度加以分析。这个系列并非为程序员而写&#xff0c;因为这些内容就是我们的日常工作。我们的目标是让更多的朋友能够了解技术可以实现的效果&#xff0c;以及更重要的——不能实现的效果。…

安排!活动素材的亿级用户精准投放

1.背景 随着闲鱼用户快速增长&#xff0c;运营活动越来越趋于精细和个性化&#xff0c;运营会根据用户偏好为其投放合适的活动&#xff0c;如下图所示在闲鱼首页商品展示时&#xff0c;会在商品的列表中插入活动Banner&#xff0c;通过这些活动banner引导用户进入到相应活动会场…

mysql计算年增长率

数据库格式如下&#xff1a; SELECTt1.YEAR,t1.quantity / t2.quantity increase_rate FROMyear_sales t1INNER JOIN year_sales t2 ON t1.YEAR - 1 t2.YEAR结果如下

云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜

本案例由九州云腾投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。随着网络技术快速发展…

刚刚,阿里开源 iOS 协程开发框架 coobjc!

刚刚&#xff0c;阿里巴巴正式对外开源了基于 Apache 2.0 协议的协程开发框架 coobjc&#xff0c;开发者们可以在 Github 上自主下载。 coobjc是为iOS平台打造的开源协程开发框架&#xff0c;支持Objective-C和Swift&#xff0c;同时提供了cokit库为Foundation和UIKit中的部分A…

zookeeper 单机和集群搭建(windows环境+linux环境)

文章目录一、单机操作1. 下载2. 解压3. 修改配置文件4. 启动二、集群操作2.1. zoo.cfg添加集群配置2.2. 在3台zk数据目录下面创建myid文件2.3. 分别启动3台zk三、伪集群操作3.1. zk-01 配置3.2. 把zk-01复制2份3.3. zk-02配置3.4. zk-03配置3.5. 创建zk数据目录3.6. 在3个zk数据…

天线接收功率计算公式_对讲机天线到底有多重要?通信效果好不好全靠它了!...

天线是任何一个无线电通信系统都不可缺少的重要组成部分。各类无线电设备所要执行的任务虽然不同&#xff0c;但天线在设备中的作用却是基本相同的。任何无线电设备都是通过无线电波来传递信息&#xff0c;因此就必须有能辐射或接收电磁波的装置。所以&#xff0c;天线的第一个…

Java List集合转换相关操作

1、List转换为String字符串&#xff0c;并且指定分隔符 ArrayList<String> keyList new ArrayList<>();keyList.add("name");keyList.add("id");String keys StringUtils.join(keyList.toArray(), " , ");System.out.println(keys…

基于Blink构建亲听项目以及全链路debug项目实时响应能力

案例与解决方案汇总页&#xff1a;阿里云实时计算产品案例&解决方案汇总 本文全面总结了大数据项目组在亲听项目以及全链路debug项目上进行的实时流处理需求梳理&#xff0c;架构选型&#xff0c;以及达成效果 一、背景介绍 1.1亲听项目 亲听项目专注于帮助用户收集、展…

腾讯启动“SaaS技术联盟”联合行业制定互联互通标准

近日&#xff0c;腾讯宣布正式启动“SaaS技术联盟”&#xff0c;联合金蝶、用友、有赞、微盟、销售易、六度人和、道一、肯耐珂萨(KNX)等外部SaaS厂商&#xff0c;以及企业微信、腾讯会议、企点等腾讯内部SaaS产品共建技术中台&#xff1b;同时&#xff0c;工信部信软司相关领导…

WINDOWS 如何关闭3306端口

关闭windows中被占用的端口 1.查找到端口的PIDnetstat -aon|findstr "3306"TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 4736 打开任务管理器

mysql innodb索引原理

聚集索引&#xff08;clustered index&#xff09; innodb存储引擎表是索引组织表&#xff0c;表中数据按照主键顺序存放。其聚集索引就是按照每张表的主键顺序构造一颗B树&#xff0c;其叶子结点中存放的就是整张表的行记录数据&#xff0c;这些叶子节点成为数据页。 聚集索…

jsp文字上下居中显示_微信朋友圈又有骚技巧,一键设置居中签名,好友傻眼了...

今日推荐&#xff1a;微信朋友圈签名居中适用&#xff1a;安卓、苹果大家好我是小雷&#xff0c;又来给大家安利微信小技巧了&#xff0c;今天给大家分享如何让你的朋友圈签名居中显示。熟悉微信的朋友都知道&#xff0c;在微信设置了个性签名之后&#xff0c;往往会同步到朋友…

java bean对象属性复制,将一个对象的属性值赋值给另一个对象,对象之间的复制方法

注意依赖&#xff0c;springframework下的复制顺序为 (目标对象,新对象) import org.springframework.beans.BeanUtils;public static void main(String[] args) {InterfaceCaseDO oldInterfaceCase new InterfaceCaseDO();oldInterfaceCase.setCaseName("zhangsan"…

云+X案例展 | 传播类:k3s基于逾百台工控机的应用实践

本案例由Rancher投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。随着国家政策的导向&am…

从大山走出的阿里首席通信科学家,这次要重返课堂

阿里巴巴首席通信科学家谢崇进与学生们交流 “我是一位没上过大学的科学家”&#xff0c;谢崇进在公益课堂上说。讲台下&#xff0c;是450位将要面临高考的乡村学生。 不久前&#xff0c;阿里巴巴首席通信科学家谢崇进通过网络视频的方式开课&#xff0c;向广东省汕头市潮南区…

MySQL 8.0.26 图形化安装教程 (windows 64位)

文章目录mysq8 比mysql5.7快2倍mysql8官网&#xff1a; https://dev.mysql.com/downloads/windows/installer/8.0.html 双击安装mysql-installer-community-8.0.21.0.msi