使用 PyCharm 运行 scrapy - 调试有效,但运行无效
Posted
技术标签:
【中文标题】使用 PyCharm 运行 scrapy - 调试有效,但运行无效【英文标题】:Running scrapy with PyCharm - Debug works but Run does not work 【发布时间】:2017-09-03 00:14:36 【问题描述】:我遇到了一个很奇怪的问题,用 PyCharm 运行 Scrapy: 使用完全相同的配置,Debug 可以工作,但 Run with PyCharm 不起作用。
Windows 10 PyCharm 2016.3.3 Scrapy 1.3.3 Python 3.6.0配置: PyCharm Edit Configuration Page
当我尝试调试 scrapy 时,它运行良好。 当我尝试运行 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,与 run 相比,debug 多了 1 个路径:
'C:\Program Files (x86)\JetBrains\PyCharm 2016.3.3\helpers\pydev'
我真的认为这不会有什么不同。
希望有人能看一下,谢谢!
【问题讨论】:
No module named 'http.client'
表示您正在 python2 上运行适用于 python3 的东西。
感谢您的回复!但我 100% 确定我使用的是 python3。您可以在附件中看到我正在使用 Python3 解释器。
你最终解决了这个问题吗?我面临完全相同的症状 - scrapy 在调试中运行良好,但在正常运行或命令行时在 http.client 上失败。
我没有弄清楚原因。我尝试启用“显示命令行后记”,它起作用了。
我遇到了同样的问题,令人惊讶的是,解决方案奏效了。我仍然不明白它是如何解决的。
【参考方案1】:
菜单运行>编辑配置 启用复选框“之后显示命令行” 这对我有帮助
【讨论】:
有没有解释为什么会这样?我刚刚遇到了这个问题,并以同样的方式解决了,但我仍然想知道它为什么会发生。【参考方案2】:如果您使用的是新版本的 PyCharm,而 Show Command line afterward
不再可用,Run with Python console
可以解决问题。
【讨论】:
这最终在 PyCharm 中停留在任务“连接到控制台...”。它永远不会完成,因此实际的 Python 程序永远不会启动。【参考方案3】:我也花了一些时间跟踪一个类似的问题。
我的问题是我有一个名为 http
的本地模块,当然它没有名为 client
的子模块。 here 描述了另一个类似的问题。
解决方案是通过编辑配置更改此测试调用的工作目录。
【讨论】:
以上是关于使用 PyCharm 运行 scrapy - 调试有效,但运行无效的主要内容,如果未能解决你的问题,请参考以下文章