Запуск scrapy с PyCharm — отладка работает, но запуск не работает

Я столкнулся с очень странной проблемой при запуске Scrapy с PyCharm:
С точно такой же конфигурацией Debug работает, но Run с PyCharm НЕ работает.

  • Windows 10
  • Пичарм 2016.3.3
  • Скрап 1.3.3
  • Питон 3.6.0

Конфигурация: страница конфигурации редактирования PyCharm

Когда я пытаюсь отладить скрап, он работает отлично. Когда я пытаюсь запустить scrapy, я получаю следующую ошибку:

C:\Users\baib2\AppData\Local\Programs\Python\Python36\python.exe 
C:/Users/baib2/AppData/Local/Programs/Python/Python36/Lib/site-packages/scrapy/cmdline.py crawl scenelist_spider
Traceback (most recent call last):
  File "C:/Users/baib2/AppData/Local/Programs/Python/Python36/Lib/site-packages/scrapy/cmdline.py", line 8, in <module   
    import scrapy
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\scrapy\__init__.py", line 27, in <module   
    from . import _monkeypatches
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\scrapy\_monkeypatches.py", line 20, in <module   
    import twisted.persisted.styles  # NOQA
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\persisted\styles.py", line 21, in <module   
    from twisted.python.compat import _PY3, _PYPY
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\python\__init__.py", line 11, in <module   
    from .compat import unicode
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\python\compat.py", line 612, in <module   
    from http import cookiejar as cookielib
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\Lib\site-packages\scrapy\http\__init__.py", line 8, in <module   
    from scrapy.http.headers import Headers
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\scrapy\http\__init__.py", line 10, in <module   
    from scrapy.http.request import Request
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\scrapy\http\request\__init__.py", line 8, in <module   
    from w3lib.url import safe_url_string
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\w3lib\url.py", line 17, in <module   
    from six.moves.urllib.request import pathname2url, url2pathname
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\six.py", line 92, in __get__
    result = self._resolve()
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\six.py", line 160, in _resolve
    module = _import_module(self.mod)
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\site-packages\six.py", line 82, in _import_module
    __import__(name)
  File "C:\Users\baib2\AppData\Local\Programs\Python\Python36\lib\urllib\request.py", line 88, in <module   
    import http.client
ModuleNotFoundError: No module named 'http.client'

Process finished with exit code 1

Нет необходимости прикреплять какой-либо код, потому что даже запуск команды:

python3.exe C:\Users\baib2\AppData\Local\Programs\Python\Python36\Lib\site-packages\scrapy\cmdline.py

выдаст ту же ошибку.

Я проверил свой sys.path, по сравнению с запуском, у отладки есть еще 1 путь:

'C:\Program Files (x86)\JetBrains\PyCharm 2016.3.3\helpers\pydev'

И я действительно не думаю, что это будет иметь значение.

Надеюсь, кто-то может взглянуть, спасибо!


person Bai Bing    schedule 07.04.2017    source источник
comment
No module named 'http.client' означает, что вы запускаете что-то, предназначенное для python3, на python2.   -  person Granitosaurus    schedule 07.04.2017
comment
Спасибо за ваш ответ! Но я на 100% уверен, что использую python3. Вы можете видеть, что я использую интерпретатор Python3 в моем приложении.   -  person Bai Bing    schedule 08.04.2017
comment
Вам удалось решить это в конце концов? Я сталкиваюсь с ТОЧНО теми же симптомами - в отладке скрап работает нормально, но на http.client происходит сбой при обычном запуске или из командной строки.   -  person Lili    schedule 03.02.2018
comment
Я не понял причину. Я попытался включить показ послесловия командной строки, это сработало.   -  person Bai Bing    schedule 04.02.2018
comment
У меня была точно такая же проблема, и на удивление решение сработало. Я до сих пор не понимаю, как это исправлено.   -  person adarsh hegde    schedule 06.03.2018
comment
Для меня проверка Run with Python console сработала. В моей версии Pycharm (2018.3.5) у меня нет командной строки Show Command   -  person Shani Shalgi    schedule 27.03.2019


Ответы (3)


Меню «Выполнить»> «Редактировать конфигурации» включить флажок «Показать командную строку после этого». Мне это помогает.

person Алекс Денькин    schedule 09.07.2017
comment
Есть ли объяснение, почему это так? Я только что столкнулся с проблемой, и она была решена таким же образом, но я все же хотел бы знать, почему это происходит. - person Jascha Grübel; 16.07.2018

Если вы используете новую версию PyCharm, где Show Command line afterward больше не доступен, Run with Python console решает проблему.

person cozyss    schedule 12.12.2018
comment
Это приводит к тому, что PyCharm застревает в задаче «Подключение к консоли»... Она никогда не завершается, поэтому фактическая программа Python никогда не запускается. - person Robert; 09.01.2019

Я также потратил некоторое время на отслеживание подобной проблемы.

Моя проблема заключалась в том, что у меня есть локальный модуль с именем http, который, конечно, не имеет подмодуля с именем client. Другая похожая проблема описана здесь.

Решение состоит в том, чтобы изменить Рабочий каталог для этого тестового вызова через Редактировать конфигурации.

person tworec    schedule 07.02.2019