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)
使用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)
文章就在这里