我有 Windows 10,带有 Aptana Studio 3。 - 我用终端在其中安装了 python (v.3.5.0) - 我安装了scrapy 1.0
现在,如果我尝试运行爬虫(scrapy),我会收到以下消息:
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 函数,它不适用于 python 3.x:python NameError: name 'file' is not defined 但问题是我没有在脚本中的任何地方使用 file() 。该消息似乎引用了 scrapy 默认文件。那我该怎么办呢?编辑scrapy的源文件?这听起来很糟糕,远远超出了我的知识水平。 那我能做什么呢? 我应该安装 python 2.7 但由于某种原因(我不记得了)我尝试时无法正确安装它
有人有解决办法吗?
最佳答案
您可能需要更新 Twisted(至 v15.4.0
或类似版本),因为您的版本与 Python 3 不兼容。
正如 Matthias 指出的,scrapy 正在移植到 Python 3。但是,您遇到的错误是来自 Twisted 的 lockfile.py
,而不是 scrapy:
File "c:\python3.5\lib\site-packages\twisted\python\lockfile.py", line 52, in <module>
_open = file
Twisted是scrapy的依赖。如果你看history of this file ,您会看到在 2015 年 9 月 22 日进行了一次合并,可能引入了 Python 3 兼容性。我可以看出您使用的是旧版本,因为只有以前的版本在 lockfile.py
中才有 _open = file
。
尽管如此,您可能仍然需要使用 Python 2,直到 scrapy 的其余部分更新为与 Py3 兼容。
关于python 名称错误 : name 'file' is not defined in python 3. 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933924/