我有Windows 10和Aptana Studio 3。
-我在终端(v.3.5.0)中安装了python
-我安装了scrapy 1.0

现在,如果我尝试运行搜寻器(草率的),则会收到以下消息:

Traceback (most recent call last):
  File "c:\python3.5\lib\runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\python3.5\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python3.5\Scripts\scrapy.exe\__main__.py", line 5, in <module>
  File "c:\python3.5\lib\site-packages\scrapy\__init__.py", line 48, in <module>
    from scrapy.spiders import Spider
  File "c:\python3.5\lib\site-packages\scrapy\spiders\__init__.py", line 10, in <module>
    from scrapy.http import Request
  File "c:\python3.5\lib\site-packages\scrapy\http\__init__.py", line 15, in <module>
    from scrapy.http.response.html import HtmlResponse
  File "c:\python3.5\lib\site-packages\scrapy\http\response\html.py", line 8, in <module>
    from scrapy.http.response.text import TextResponse
  File "c:\python3.5\lib\site-packages\scrapy\http\response\text.py", line 13, in <module>
    from scrapy.utils.response import get_base_url
  File "c:\python3.5\lib\site-packages\scrapy\utils\response.py", line 12, in <module>
    from twisted.web import http
  File "c:\python3.5\lib\site-packages\twisted\web\http.py", line 92, in <module>
    from twisted.internet import interfaces, reactor, protocol, address
  File "c:\python3.5\lib\site-packages\twisted\internet\reactor.py", line 38, in <module>
    from twisted.internet import default
  File "c:\python3.5\lib\site-packages\twisted\internet\default.py", line 56, in <module>
    install = _getInstallFunction(platform)
  File "c:\python3.5\lib\site-packages\twisted\internet\default.py", line 50, in _getInstallFunction
    from twisted.internet.selectreactor import install
  File "c:\python3.5\lib\site-packages\twisted\internet\selectreactor.py", line 18, in <module>
    from twisted.internet import posixbase
  File "c:\python3.5\lib\site-packages\twisted\internet\posixbase.py", line 18, in <module>
    from twisted.internet import error, udp, tcp
  File "c:\python3.5\lib\site-packages\twisted\internet\udp.py", line 53, in <module>
    from twisted.internet import base, defer, address
  File "c:\python3.5\lib\site-packages\twisted\internet\base.py", line 23, in <module>
    from twisted.internet import fdesc, main, error, abstract, defer, threads
  File "c:\python3.5\lib\site-packages\twisted\internet\defer.py", line 29, in <module>
    from twisted.python import lockfile, failure
  File "c:\python3.5\lib\site-packages\twisted\python\lockfile.py", line 52, in <module>
    _open = file
NameError: name 'file' is not defined


到目前为止,我得到的是file()是python 2.x函数,并且在此Q中它不适用于python 3.x:python NameError: name 'file' is not defined
但是问题是我在脚本的任何地方都没有使用file()。并且该消息似乎与抓取默认文件有关。那我该怎么办?编辑scrapy的源文件?这听起来太糟糕了,远远超出了我的知识水平。
那我该怎么办?
我应该安装python 2.7,但是由于某些原因(我不记得了),当我尝试时无法正确安装它

那么有人对此有解决方案吗?

最佳答案

您可能需要更新Twisted(至v15.4.0或类似名称),因为您的版本与Python 3不兼容。

正如Matthias指出的那样,scrapy已被移植到Python3。但是,您的错误出在Twisted的lockfile.py中,而不是scrapy:

File "c:\python3.5\lib\site-packages\twisted\python\lockfile.py", line 52, in <module>
    _open = file


扭曲是一种scrap抓的依赖。如果查看history of this file,您会发现在2015年9月22日有一个合并,该合并可能带来了Python 3兼容性。我可以说您有一个较旧的版本,因为只有较早的版本在该_open = file中具有lockfile.py

话虽如此,您可能仍需要使用Python 2,直到scrapy的其余部分更新为与Py3兼容为止。

10-06 05:20
查看更多