Python Travis pypi软件包版本

Python Travis pypi软件包版本,python,travis-ci,pypi,Python,Travis Ci,Pypi,我已经设置了travis.ci,以便在标记push to master时自动将包部署到pypi 问题是,在我的setup.py中,我必须指定包的版本,有时我会忘记这会导致未部署的包(或者Pypi会覆盖旧包吗?) 然而,有没有办法将pypi上的包版本与分配给提交的标记相匹配?我已经在我的一个项目中完成了这项工作 [编辑N°2]我写了一个小教程,你可以在这里找到: V1。使用PBR 你可以找到它 Travis的基本工作如下: 检查提交是否有标记 如果是,请使用正则表达式(/(\d+\)?(\d+\

我已经设置了travis.ci,以便在标记push to master时自动将包部署到pypi

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


然而,有没有办法将pypi上的包版本与分配给提交的标记相匹配?

我已经在我的一个项目中完成了这项工作

[编辑N°2]我写了一个小教程,你可以在这里找到:

V1。使用PBR 你可以找到它

Travis的基本工作如下:

  • 检查提交是否有标记
  • 如果是,请使用正则表达式(
    /(\d+\)?(\d+\)?(\*\124;\ d+$/
    )检查格式
  • 如果标签类似于
    1.0.0
    ,那么它会将其用于pypi版本

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

    [EDIT N°3]这是完全错误的,如果标签与此处描述的内容不匹配,PBR无法定义版本。

我过去经常这样做

用于以一致的方式管理setuptools打包需求的库

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

如果您仍然有问题,请随时在github上标记我(@73VW)或直接在此处询问

祝你今天愉快

[编辑] V2。使用sed 在git中,您可以使用以下命令获取最后一个标记
git descripe--abbrev=0--tags

因此,如果您的设置如下所示:

从设置工具导入设置
...
设置(
...
version='NEWVERSIONHERE',
...
)
您可以使用shell脚本将标记版本替换为
NEWVERSIONHERE

我尝试了以下方法(在本地,而不是在Travis上),效果很好

#/垃圾箱/垃圾箱
set-xe
TAG=$(git descripe--abbrev=0--tags)
sed-i“s/NEWVERSIONHERE/${TAG}/g”setup.py
-i
标志用于查找并替换到位。因此,它会在您指定的文件中发生更改

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

示例
.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

希望这有帮助

有没有办法让travis根据标签设置版本?它构建了标签,但是我如何告诉travis将版本添加为git中的版本呢?我真的需要为这项琐碎、强制性的任务使用额外的软件包吗?我不确定是否真的正确理解了您的问题。英语不是我的母语。就我的项目而言,travis在遇到与正则表达式匹配的标记时部署到pypi。从那时起,pbr做了其他一切。它接受标记并将其指定为包版本。我不知道还有别的办法,但可能有。您可以从git获取标记,然后将其“sed”到您的安装文件或类似文件中。如果我不回答你的问题,请告诉我。这很清楚,我在问特雷维斯是否可以在不需要安装PBR的情况下为我做到这一点。好的,我现在放心了,哈哈。我不能告诉你,如果没有PBR特拉维斯可以做到,但这是我找到的唯一方法,我知道这样做很容易。可能还有其他方法。@EsseTi我用另一种方法更新了我的答案。希望这有帮助!如果是这样,请接受我的回答。祝您有个美好的一天。