如何通过python3创建scrapy项目

Pau*_*son 6 python scrapy python-2.7

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

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

如何在scrapy startproject tutorialpython 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'
Run Code Online (Sandbox Code Playgroud)

Håk*_*Lid 7

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

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

pip3 uninstall scrapy
Run Code Online (Sandbox Code Playgroud)

然后使用hash -r或启动新的终端会话清除bash中的命令缓存.

如果该scrapy命令仍然不起作用,您可能还必须重新安装它的python 2版本.

pip install scrapy --force-reinstall
Run Code Online (Sandbox Code Playgroud)


小智 6

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

$ pip install scrapy==1.1.0rc1
Run Code Online (Sandbox Code Playgroud)

文章就在这里