2015-08-08 128 views
6

我使用Mac OS,它有python 2.7和python 3.4。我使用pip install命令在python 2.7中安裝scrapy。購買我也使用pip3 install命令在python3.4中安裝scrapy ...如何通過python3創建scrapy項目

我讀了scrapy.org上的官方文檔,我知道scrapy只是支持python 2.7。當我使用命令scrapy startproject tutorial時,它會返回下面的錯誤。

如何在Python 2.7中使用命令scrapy startproject tutorial

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' 

回答

7

使用pip安裝scrapy會在您的PATH中放置一個可執行文件。由於你安裝了兩次,python2版本可能被覆蓋。要找到這個文件,使用命令which scrapy。要查看文件的內容,請使用cat $(which scrapy)。它可能包含一行代碼,如下所示:#!/usr/bin/python3.4導致它使用python的不兼容版本。

要解決此問題,請卸載python3版本的scrapy。

pip3 uninstall scrapy 

然後通過使用hash -r或開始一個新的終端會話清潔在bash命令緩存。

如果scrapy命令仍然不起作用,您可能需要重新安裝它的python 2版本。

pip install scrapy --force-reinstall 
+0

您好,感謝您的回覆。 我使用pip3卸載scrapy,然後我使用pip卸載scrapy。 然後我使用pip install scrapy.But現在當我使用命令'scrapy startproject tutorial'時,它將返回下面的錯誤: -bash:/Library/Frameworks/Python.framework/Versions/3.4/bin/scrapy:No這樣的文件或目錄 – PaulGibson

+1

當我重新啓動終端,它沒關係! 謝謝! – PaulGibson

+0

scrapy的舊路徑仍然由bash緩存。啓動一個新的shell會話或使用'hash -r'會更新你的可執行命令緩存。 –

6

該解決方案有,開發商已經提供了Python3.x的scrapy,所以你可以嘗試

$ pip install scrapy==1.1.0rc1 

而且文章是here

0

其實你可以使用最新的Scrapy使用python 3. 我編寫了一個article關於在Windows上爲Python3安裝Scrapy 3.1.1rc3並在Pycharm中使用它。我使用Conda進行包管理和虛擬環境。 Conda比pip和easy_install更適合這項工作。它應該在Mac上進行微小的更改。