YardalGedal
@YardalGedal
yeah boy

Почему docker-scrapyd использует Python 2.7, вместо Python 3.7?

Использую вроде бы неплохой, обновляемый образ vimagick/scrapyd вместе с thecjw/scrapydweb, .egg файл собран для Python 3.7 и используются аннотации типов. При загрузке .egg в scrapyd возникает ошибка
{
    "auth": null,
    "message": "See details below",
    "node_name": "2d354ebaf1d7",
    "status": "error",
    "status_code": 200,
    "url": "http://scrapyd:6800/addversion.json",
    "when": "2019-06-04 13:28:25"
}

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/dist-packages/scrapyd/runner.py", line 40, in <module>
    main()
  File "/usr/local/lib/python2.7/dist-packages/scrapyd/runner.py", line 37, in main
    execute()
  File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 149, in execute
    cmd.crawler_process = CrawlerProcess(settings)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/crawler.py", line 264, in __init__
    super(CrawlerProcess, self).__init__(settings)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/crawler.py", line 142, in __init__
    self.spider_loader = _get_spider_loader(settings)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/crawler.py", line 351, in _get_spider_loader
    return loader_cls.from_settings(settings.frozencopy())
  File "/usr/local/lib/python2.7/dist-packages/scrapy/spiderloader.py", line 61, in from_settings
    return cls(settings)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/spiderloader.py", line 25, in __init__
    self._load_all_spiders()
  File "/usr/local/lib/python2.7/dist-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders
    for module in walk_modules(name):
  File "/usr/local/lib/python2.7/dist-packages/scrapy/utils/misc.py", line 63, in walk_modules
    mod = import_module(path)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/tmp/JaAuto-2019-06-04T10_26_36-oRHPI3.egg/JaAuto/spiders/__init__.py", line 17
    def parse(self, response: scrapy.http.HtmlResponse):
                            ^
SyntaxError: invalid syntax

Что логично, ведь почему-то scrapyd решил использовать Python 2.7, однако в Dockerfile этого образа , нет ни намёка на использование Python 2.7, то есть он использует третью версию.

Остальные образы scrapyd с dockerhub явно устаревшие и не обновлялись уже по несколько лет, как можно устранить эту ошибку?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Гипотеза: потому что образ на основе Debian и всё устанавливается через pip вместо pip3.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Aitarget Москва
от 200 000 руб.
от 60 000 до 140 000 руб.
Платформа НТИ Москва
от 130 000 до 180 000 руб.