使用github+travis将Python语言包部署到Pypi
小标 2018-12-10 来源 : 阅读 929 评论 0

摘要:本文主要向大家介绍了使用github+travis将Python语言包部署到Pypi,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了使用github+travis将Python语言包部署到Pypi,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

我在 github 托管 Python 代码,然后将包发布到 Pypi,通常的操作步骤是,更新完代码将提交到 github ,然后手动将包更新到 pypi,这样比较繁琐,就想到了使用github+travis-ci 构建一个自动部署环境。

注册 pypi

访问pypi.org 点击Register注册账号,记住自己的用户名密码。

创建 setup.py 文件

setup.py 文件放置于包的根目录,示例内容如下:

#!/usr/bin/env python from setuptools import setup, find_packages with open("README.md", "r") as fh:     long_description = fh.read() with open('requirements.txt') as f:     requirements = [l for l in f.read().splitlines() if l] setup(name="python-weixin",  # 项目名       version="0.3.2",       # 版本号       description="Python Weixin API client support wechat-app",  #简介       long_description=long_description,  # 长简介 这里使用的 readme 内容       long_description_content_type="text/markdown",       license="BSD",   # 授权       install_requires=requirements, # 依赖       author="gusibi",  # 作者       author_email="xxx@gmail.com",  # 邮箱       url="https://github.com/gusibi/python-weixin",  # 地址       download_url="https://github.com/gusibi/python-weixin/archive/master.zip",       packages=find_packages(),       keywords=["python-weixin", "weixin", "wechat", "sdk", "weapp", "wxapp"],       zip_safe=True) 复制代码

以上特别需要注意的是 packages参数,用来申明你的包里面要包含的目录,这里使用setuptools自动决定要包含哪些包。

配置 travis-ci

github 提供了多种集成方式,这里我们选择 Travis-ci

选择后访问 travis-ci.com/profile,如果是第一次使用 travis-ci 可以使用 github 账号登录,然后选择对应的 github 库激活。

然后在 github 代码库的根目录添加 .travis.yml 文件。

language: python python:   # 指定运行环境,这里会分别在 2.7 和 3.5 运行   - '2.7'   - '3.5'  install:   - pip install -r requirements.txt   # 安装依赖 script: python test_example.py  # 如果有单元测试这里应该执行单元测试 复制代码

script 是一个必须的命令,通常如果有单元测试的话这里应该执行单元测试

添加 Pypi 部署配置

通过在 .travis.yml 中添加 deploy 模块, Travis CI 实现自动部署,

language: python python: - '2.7' - '3.5' install: - pip install -r requirements.txt script: python test_example.py deploy:   provider: pypi   user: goodspeed     # pypi 用户名   password: password  # pypi 密码   on:     python: 2.7     tags: true     branch: master 复制代码

在 deploy 部分,我们指定 provider 为 pypi,然后添加 user、password。

在 on 部分我们声明一些特殊的配置,比如:

brance: master 意思是只有 master 分支才执行打包部署

python: 2.7 意思是只在 python 2.7 版本执行打包部署

tags: true 意思是只有在发布一个新的版本时才执行打包部署

具体配置参考: Conditional-Releases-with-on

加密密码

上面的配置使用的是明文密码,这样就把pypi 账号公开了,太不安全。这里推荐使用 travis-encrypt 加密密码。

安装 travis-encrypt

pip install travis-encrypt 复制代码

然后在 .travis.yml 所在目录执行:

travis-encrypt --deploy gusibi python-weixin .travis.yml Password: # 在这里输入pypi 密码 复制代码

这里 gusibi python-weixin 需要替换成相对应的 github username 和 repository。

命令参考:travis-encrypt

执行完之后password 部分旧会被加密后的秘钥代替,最终 .travis.yml 内容如下:

language: python python: - '2.7' - '3.5' install: - pip install -r requirements.txt script: python test_example.py deploy:   provider: pypi   user: goodspeed   password:     secure: cjQdXGKkNpwKmGgEhONtd2YR+PF44gtZgMegv5O3CRsszocaRqxcBdfwi0qz6KupLMWl/WTq+bYtzf42lpytMe7cB/CPA2sCUDEo6qyIE+Brb5J57GUhd9HIhP5F44BHKWzBnYFbgPsQ2k1ckEDJsUp5yyFvUBkQmv3+LOo9Kf492oCQlgnzaGSRtPQaG56XdLKgCZrxdtfteTalTbjQO7w/GNm5lBn4l7iY1qWiQmzFxkUuZu317yAnohdH84fq9Ozov4S3nPNSTt800HjHkXwaBzxMuJ2SJBadZAW/abCvk34IPyvxjy7upNNLq80/yvgYKzxWBklcP9LxJX2Pwk9NtTY1zUEykkwdBVxZShhBXtWDma/yWQp2RdCVZtLS4GTg4X61PMgH0iwzwzGW8LARj2ZMowQoPipUYCJ7qUfyXrxU05ypizWKIIfrqdRh8Twj9Jhyg/fAoRygCoXNtMqwSmomjkwl6f1i+6lAQENdmVKQTesP56r/olXKb4rhrOgyhj7anJd3F/SZ+g8jQFHHGLcaSkEoVXL6BFPDMxYdMRmx5HKonP9uQO74ZdeevkHK0wFzSbjqpKdVzeuYuyPiHnDyooyjGL+2BzE/Zzo5KCNEflAE22kAuAbjXCuJji7+j47QohrlYjmj2+F7NDBE5sJRp3yLJWIEPqLND/k=   on:     python: 2.7     tags: true     branch: master 复制代码

将代码提交之后,访问 travis-ci.org 会看到已经触发了 ci ,正在构建:

这里有两个 job 正在同时构建,分别是 python2.7 环境和 python3.5 环境。

但是这时并没有把包部署到 pypi,还需要在 github releases 页面重新发布一个版本来触发部署。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程