如何通过python3创建scrapy项目

时间:2015-08-08 12:20:55

标签: python python-2.7 scrapy

我使用Mac OS,它有python 2.7和python 3.4。我使用pip install命令在python 2.7中安装scrapy。购买我也使用pip3 install命令在python3.4中安装scrapy ......

我在scrapy.org上阅读了官方文档,我知道scrapy只支持python 2.7。当我使用命令scrapy startproject tutorial时,它将返回下面的错误。

如何使用命令scrapy startproject tutorial和python 2.7?

  File "/Library/Frameworks/Python.framework/Versions/3.4/bin/scrapy", line 9, in <module>
    load_entry_point('Scrapy==1.1.0dev1', 'console_scripts', 'scrapy')()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Scrapy-1.1.0dev1-py3.4.egg/scrapy/cmdline.py", line 122, in execute
    cmds = _get_commands_dict(settings, inproject)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Scrapy-1.1.0dev1-py3.4.egg/scrapy/cmdline.py", line 46, in _get_commands_dict
    cmds = _get_commands_from_module('scrapy.commands', inproject)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Scrapy-1.1.0dev1-py3.4.egg/scrapy/cmdline.py", line 29, in _get_commands_from_module
    for cmd in _iter_command_classes(module):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Scrapy-1.1.0dev1-py3.4.egg/scrapy/cmdline.py", line 21, in _iter_command_classes
    for obj in vars(module).itervalues():
AttributeError: 'dict' object has no attribute 'itervalues'

3 个答案:

答案 0 :(得分:7)

使用pip安装scrapy会将可执行文件放在PATH中的某个位置。由于你安装了两次,python2版本可能被覆盖了。要查找此文件,请使用命令which scrapy。要查看文件的内容,请使用cat $(which scrapy)。它可能包含一行如下所示:#!/usr/bin/python3.4导致它使用不兼容的python版本。

要解决此问题,请卸载scrapy的python3版本。

pip3 uninstall scrapy

然后使用hash -r或开始新的终端会话清除bash中的命令缓存。

如果scrapy命令仍然无效,您可能还需要重新安装它的python 2版本。

pip install scrapy --force-reinstall

答案 1 :(得分:6)

解决方案是,开发人员已经为Python3.x提供了scrapy,所以你可以试试

$ pip install scrapy==1.1.0rc1

文章是here

答案 2 :(得分:0)

实际上你可以使用最新的Scrapy来处理python 3。 我编写了一个article关于在Windows上为Python3安装Scrapy 3.1.1rc3并在Pycharm中使用它。我使用Conda进行包管理和虚拟环境。对于这项工作,Conda比pip和easy_install工作得更好。它应该适用于Mac,只需稍作修改即可。