我使用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'
答案 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)
答案 2 :(得分:0)