LINUX.ORG.RU

Как проверить, что пакет существует\не существует в репозитории pypi без загрузки с указанием версии?

 ,


0

1

Есть огромный список пакетов, указаны в виде зависимостей.

Например:

['ansible-core~=2.12.5', 'PyYAML', 'cryptography', 'jinja2', 'packaging', 'resolvelib<0.6.0,>=0.5.3', 'cffi>=1.12', 'MarkupSafe>=2.0', 'pyparsing!=3.0.5,>=2.0.2', 'pycparser']

Мне надо проверить, существуют ли эти версии в локальном репозитории. Как это сделать?

На ум приходит только вот это:

pip3 download --no-deps ansible-core~=2.12.5 --index-url [локальное репо pypi]

Но это не эффективно, согласитесь. Потому что будет тратиться время на загрузку пакетов. Как можно решить проблему более правильным путём? –dry-run не нашёл.

★★★

Последнее исправление: iljuase (всего исправлений: 2)

Там же есть поиск? Который выдает название пакета и его статус «установлен» или нет. Напиши скрипт, который по списку будет искать каждый пакет и грепать его статус.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Ой, бред несу. Ты ж в репе искать собрался. Ну, в принципе, агалогично, только не статус, а вообще наличие.

Zhbert ★★★★★
()
Ответ на: комментарий от kto_tama

https://pypi.org/project/package-exists/ этот? Что-то не нашёл инструкцию, ни на одной сайте он не упоминается. Домашней страницы нет. Ставить страшно.

upd: посмотрел исходники, не учитывает версию:

    response = requests.get("https://pypi.org/project/" + package_name)
    if response.status_code == 200:
        print(
            f"Unfortunately, '{package_name}' already exists in the Pypi repository.\nPlease, try another available package name for publishing within pypi.org")
        return True
    else:
        print(f"Fortunately, '{package_name}' does not exist in Pypi repository and is currently available for publishing within pypi.org.\nHurry up, before someone takes it!")
        return False

Такое я и сам могу написать…

iljuase ★★★
() автор топика
Последнее исправление: iljuase (всего исправлений: 2)
Ответ на: комментарий от evgeny_aa

Это я знаю, а дальше как? Писать огромный скрипт, который будет проверять наличие нужной версии?

Обработать, скажем,

ansible-core~=2.12.5

Не так уж и просто… В остальных случаях тоже.

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

Ну, была обозначена проблема с необходимостью загрузки пакетов, если чекать через pip, я на это и отвечал :)

Если не охота писать свои костыли, то, можно в сторону poetry посмотреть, вроде бы он умеет (не уверен, уже года 2-3 на питоше не пишу).

evgeny_aa ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.