python 名称错误 : name 'file' is not defined in python 3. 5

标签 python python-3.x

我有 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/

相关文章:

python - 如何创建椭圆形几何体

python - 将宽变长但重复特定列

python-3.x - 从FeatureUnion +管道中获取特征名称

Python字符串 'in'算子实现算法和时间复杂度

python - 类型提示返回 NameError : name 'datetime' not defined

python-3.x - 如何将自定义数据加载到 keras cyclegan 示例的 tfds 中?

python - 重复提取数组的一部分

python-3.x - 我们如何添加具有相同 id 的数据框?

python-3.x - 在 python3 上播放带有 playsound 的音频时出现问题

python - python中Haskell scanl的等价物