web-dev-qa-db-ja.com

ScrapyはImportErrorをスローします:名前xmlrpc_clientをインポートできません

Scrapyをpip経由でインストールし、Python 2.7.10

scrapy
Traceback (most recent call last):
File "/usr/local/bin/scrapy", line 7, in <module>
from scrapy.cmdline import execute
File "/Library/Python/2.7/site-packages/scrapy/__init__.py", line 48,  
in <module>
from scrapy.spiders import Spider
File "/Library/Python/2.7/site-packages/scrapy/spiders/__init__.py",    
line 10, in <module>
from scrapy.http import Request
File "/Library/Python/2.7/site-packages/scrapy/http/__init__.py", line   
12, in <module>
from scrapy.http.request.rpc import XmlRpcRequest
File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py",  
line 7, in <module>
from six.moves import xmlrpc_client as xmlrpclib
ImportError: cannot import name xmlrpc_client

しかし、私はモジュールをインポートできます:

Python 2.7.10 (default, Jun 10 2015, 19:42:47) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import scrapy
>>> 

どうしたの?

33
ilopezluna

OS Xでこの問題を修正しました。

最初にファイルをバックアップしてください。

Sudo rm -rf /Library/Python/2.7/site-packages/six*
Sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
Sudo pip install six

Scrapy 1.0.0の準備が整いました。


エラーが発生した場合rm: /System/Library/... Operation not permitted

無効にしてみてください システム整合性保護
を参照 ルートEl Capitanでの操作は許可されない(ルートレスが無効)

70
chengbo

これはMac OSX for Scrapyの既知の問題です。 このリンク を参照できます。

基本的に、問題はシステムのPYTHONPATHにあります。この問題を解決するには、現在のPYTHONPATHを変更して、新しいMac OSXバージョンまたはPythonのないMac OSXバージョンを指すようにします。 Scrapyを実行する前に、次を試してください。

export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH

それがうまくいけば、.bashrcファイルを永続的に変更できます:

echo "export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH" >> ~/.bashrc

これでうまくいかない場合は、上記のリンクをご覧ください。

32
vedoc

Scrapy 1.0にアップグレードするときにも同じ問題がありました。数多くの回避策の後、私のために働いたソリューションは、pipで6つをアンインストールしていました:

Sudo pip uninstall 6

その後、easy_installを使用して6つを再インストールします

easy_install 6

それがうまくいくことを願っています!

18
Dan Banks

Scrapyをダウングレードするよりも、バージョン6をアップグレードする方が良いでしょう。

pip install --upgrade six scrapy

これにより、Scrapy 1.0のすべてのグッズを使用できます;)

5
Elias Dorneles

私は同じ問題を抱えていました。これを試して:

Sudo pipアンインストールスクレイピー

Sudo pip install scrapy == 0.24.2

その後、それを試してみてください

3
iOSBeginner

OS Xでの最適なソリューションは「システムpythonを使用しない」ことだと思います。生活が楽になります。 このリンク は、これを行う方法を示しています。

Pipがシステムパッケージを更新できないという既知の問題があります。 Scrapyとその依存関係を正常にインストールするには、これに対処する必要があります。提案された解決策は次のとおりです。

(推奨)システムpythonを使用せず、システムの他の部分と競合しない新しい更新バージョンをインストールします。 homebrewパッケージマネージャーを使用して行う方法は次のとおりです。

  1. http://brew.sh/ の指示に従ってhomebrewをインストールします
  2. PATH変数を更新して、システムパッケージの前にhomebrewパッケージを使用するように指定します(デフォルトのシェルとしてzshを使用している場合は、.bashrcを.zshrcに適宜変更します)。

echo "export PATH =/usr/local/bin:/ usr/local/sbin:$ PATH" >>〜/ .bashrc

  1. .bashrcをリロードして、変更が行われたことを確認します。

ソース〜/ .bashrc

  1. Pythonをインストールします。

pythonを作成する

  1. pythonの最新バージョンにはpipがバンドルされているため、個別にインストールする必要はありません。そうでない場合は、pythonをアップグレードします。

brew update;醸造アップグレードPython

1
Shupeng Xu