Пакет: python3-module-pypi-search-1.2.1-alt1 Не справляется с поиском некоторых пакетов, например django: -------------------------------------------------------------------------------- $ pypisearch django [INFO] :: Searching for package `django`... Traceback (most recent call last): File "/usr/bin/pypisearch", line 33, in <module> sys.exit(load_entry_point('pypi-search==1.2.1', 'console_scripts', 'pypisearch')()) File "/usr/lib/python3/site-packages/pypi_search/main.py", line 37, in main github_stats = pypi.get_github_stats() File "/usr/lib/python3/site-packages/pypi_search/utils.py", line 69, in get_github_stats github_data_url = github_stats['data-url'] File "/usr/lib/python3/site-packages/bs4/element.py", line 1406, in __getitem__ return self.attrs[key] KeyError: 'data-url' -------------------------------------------------------------------------------- Ошибка также есть в P10 (версия та же: 1.2.1-alt1). Также ошибка воспроизводится при установке в чистое виртуальное окружение. Можно сделать вывод, что проблема в апстриме.
Немного изучил исходный код и вот что выяснил: - модуль опирается на парсинг исходного кода страниц пакетов на pypi.org - ошибка стала возникать после изменения исходного кода страниц на pypi.org (добавлен JavaScript) - в исходном коде страницы при отключенном JavaScript необходимых значений уже нет - скорее всего необходимо будет переписать большую часть кода модуля и использовать не BeautifulSoup4, а, допустим, Selenium
(Ответ для Anton Zhukharev на комментарий #1) > Немного изучил исходный код и вот что выяснил: > > - модуль опирается на парсинг исходного кода страниц пакетов на pypi.org > > - ошибка стала возникать после изменения исходного кода страниц на pypi.org > (добавлен JavaScript) > > - в исходном коде страницы при отключенном JavaScript необходимых значений > уже нет > > - скорее всего необходимо будет переписать большую часть кода модуля и > использовать не BeautifulSoup4, а, допустим, Selenium Скорее, не его надо править, а https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83
(Ответ для Andrey Cherepanov на комментарий #2) > Скорее, не его надо править, а > https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83 Его тоже необходимо править, поскольку он использует pypi-search. Тем не менее, если установить просто python3-module-pypi-search и использовать скрипт pypisearch из него, то эта ошибка воспроизводится. Здесь забыл описать то, что ошибка воспроизводится только если в результате поиска находится 1 пакет - тогда модуль пытается получить из pypi.org ссылку на репозиторий на github.com и по этой ссылке запросить более подробную информацию о пакете.
(Ответ для Anton Zhukharev на комментарий #3) > (Ответ для Andrey Cherepanov на комментарий #2) > > Скорее, не его надо править, а > > https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83 > Его тоже необходимо править, поскольку он использует pypi-search. Если pypi-search не реанимировать*