gpt4 book ai didi

python - Travis pypi 包版本

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:35 24 4
gpt4 key购买 nike

我已经将 travis.ci 设置为在标记推送到 master 时自动将包部署到 pypi。

问题是,在我的 setup.py 中,我必须指定包版本,有时我忘记了这会导致未部署的包(或者 Pypi 会覆盖旧版本吗?)

但是,有没有办法将 pypi 上的包版本匹配为分配给提交的标记?

最佳答案

我已经在我的一个项目中完成了。

[EDIT N°2] 我写了一个小教程,您可以在这里找到:https://github.com/73VW/Publishing-to-PyPI-with-pbr-and-Travis

V1。使用 PBR

你可以找到它here on Github .

Travis 的主要工作如下:

  • 检查提交是否有标签
  • 如果是这样,请使用正则表达式检查格式 (/(\d+\.)?(\d+\.)?(\*|\d+)$/)
  • 如果标签类似于 1.0.0,它将用于 pypi 版本。

    您仍然可以转换正则表达式以匹配 v1.0.0 等标签。使用类似 /v?(\d+\.)?(\d+\.)?(\*|\d+)$/

    [编辑 N°3] 这是完全错误的,如果标签与此处描述的内容不匹配,PBR 无法定义版本 https://docs.openstack.org/pbr/3.1.0/semver.html .

我使用 PBR做这个。

A library for managing setuptools packaging needs in a consistent manner.

检查我的存储库中的以下文件:

如果您仍有问题,请随时在 github 上标记我 (@73VW) 或直接在这里提问。

祝你有美好的一天。

[编辑]

V2。使用 sed

在 git 中,您可以使用以下命令获取最后一个标签 git describe --abbrev=0 --tags

因此,如果您的设置类似于以下内容:

from setuptools import setup
...

setup(
...
version='NEWVERSIONHERE',
...
)

您可以使用 shell 脚本将 NEWVERSIONHERE 替换为您的标签版本。

我尝试了以下方法(在本地,而不是在 Travis 上)并且有效。

#!/bin/sh

set -xe
TAG=$(git describe --abbrev=0 --tags)

sed -i "s/NEWVERSIONHERE/${TAG}/g" setup.py

-i 标志用于就地查找和替换。因此它会更改您指定的文件。

只需将此代码放入 shell 脚本中,不要忘记 chmod 它以便能够运行它,并从 Travis 运行它。 p>

示例 .travis.yml 文件:

dist: trusty
sudo: required

language: python
python: 3.6

cache: apt

install:
- pip install -r requirements.txt
- chmod 777 YOURSCRIPT.sh

script:
- your tests here
- ./YOURSCRIPT.sh

deploy:
skip_cleanup: true
provider: pypi
distributions: sdist bdist_wheel
on:
tags: true
branch:
- master
- /(\d+\.)?(\d+\.)?(\*|\d+)$/
user: YOUR PYPI USERNAME
password:
secure: YOUR PYPI ENCODED PASSWORD

希望这对您有所帮助!

关于python - Travis pypi 包版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com