Как получить последнюю ссылку sdist от PyPI - PullRequest
1 голос
/ 18 января 2020

Я хочу получить URL-адрес sdist для meta.yaml в рецепте сборки conda. Необходимо получить указанную c версию или последнюю версию по URL. поскольку я делаю это с помощью действий Github для CI / CD, мне нужно автоматически получить исходную ссылку либо указанной c версии, либо самой последней версии.

Теперь ссылка выглядит так: https://files.pythonhosted.org/packages/40/e7/sha-256-of-file/file Мне нужно что-то надежное, например https://hosting/package/release/file

Мне нужно знать более надежный способ получения либо последнего sdist, либо sdist определенного выпуска c. Есть ли способ сделать это, или мне нужно go по-другому?

Есть ли ссылка для загрузки исходного кода PyPi, которая всегда указывает на последнюю версию?

Этот вопрос не работает для меня, поскольку я не пытаюсь установить его в python. Мне нужно это включить в рецепт meta.yaml для conda-build.

meta.yaml выглядит следующим образом:

{% set version = "0.1.1rc3" %}

package:
  name: blablablah
  version: {{ version }}

source:
  url: 
  sha256: f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5

build:
  noarch: python
  number: 0
  script: python -m pip install --no-deps --ignore-installed .

requirements:
  host:
    - python
    - pip
    - numpy==1.16.5
    - cython
  run:
    - python

test:
  imports:
    - blablablah

about:
   here are information about the package

Я не знаю, где взять этот файл, так как код обновляется ежечасно, и ручное обновление невозможно.

1 Ответ

1 голос
/ 21 января 2020

Если вы знаете точное название проекта и версию, вы можете использовать следующую структуру URL:

project_name = "..."
version = "..."
url = f"https://files.pythonhosted.org/packages/source/{project_name[0]}/{project_name}/{project_name}-{version}.tar.gz

например

https://files.pythonhosted.org/packages/source/p/pip/pip-20.0.1.tar.gz

Если вы не знаете последнюю версию, вы можете использовать PyPI JSON API , чтобы получить ее:

>>> import requests
>>> resp = requests.get('https://pypi.org/pypi/pip/json').json()
>>> resp['info']['version']
'20.0.1'

Примечание: есть нет никакой гарантии, что исходный дистрибутив для данной версии существует, хотя, скорее всего,

...