我有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兼容为止。