web-dev-qa-db-ja.com

Python Facebook SDK: 'モジュール'オブジェクトには属性 'GraphAPI'がありません

Facebook SDK forPythonで基本的な例を実行しようとしています。私はこれを正確に実行しようとしました tutorial コマンドラインから実行します(「_pip install facebook_」と「_pip install facebook-sdk_」が最初に正常に実行されました...):

enter image description here

_import Facebook_は正常に機能しますが、graph = facebook.GraphAPI()は次のエラーを出します。

_Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'GraphAPI'
_

モジュールの仕組みについてはよくわかりませんが、facebookがまったく認識されていないようです。または、ここに何か他のものがありません。コマンドラインから、次のことを調べてみました。

_>>>dir(facebook)
_

出力:

_['__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__version__']
_

そして...

_>>>help(facebook)
_

出力:

_Help on package facebook:

NAME
    facebook - TODO: Document your package.

FILE
    /Library/Python/2.7/site-packages/Facebook-0.0-py2.7.Egg/facebook/__init__.py

PACKAGE CONTENTS


DATA
    __loader__ = <zipimporter object "/Library/Python/2.7/site-packages/Fa...
    __version__ = 'TODO: Enter a version'

VERSION
    TODO: Enter a version

(END) 
_

...しかし、私はまだ立ち往生しています。どういうわけか完全にインスタンス化するために「バージョンを入力」する必要がありますか?それとも他の何かでしょうか?

18
nicole

UbuntuまたはDebianを使用している場合は、次のコマンドを実行するだけでこれを機能させることができます

Sudo pip uninstall facebook
Sudo pip uninstall facebook-sdk
Sudo pip install facebook-sdk

他のオペレーティングシステムの場合は、facebookおよびfacebook-sdkパッケージを削除し、facebook-sdkのみをインストールします。

そして、そのプログラムを実行すると、動作します。 facebookモジュールはダミーモジュールのようです。実際に必要なのはfacebook-sdkだけです。

22
thefourtheye

Facebook-sdkを初めてpython)いじったときにも同じ問題が発生しました。これは、python file "facebook.py"、一貫せずに名前が衝突しました。

29
user3878801

@thefourtheyeが提案したことを試しましたが、pipはすべてをアンインストールしていませんでした。代わりに、Facebookパッケージを

rm -rf /path/to/my/venv/lib/python2.7/site-packages/facebook* && rm -rf /path/to/my/venv/lib/python2.7/site-packages/Facebook* 

警告:何かを削除する前に、facebookで始まるパッケージが他にないことを確認してください。私の場合、私は持っていました

facebook/    
Facebook-0.0-py2.7.Egg-info/   
facebook.py    
facebook.pyc 
facebook_sdk-0.4.0-py2.7.Egg-info/ 
1
Meistro

私も同じ問題を抱えてる。ファイルの名前をfacebook.pyからfirst.pyに変更しました(1つの名前を選択できます)。したがって、私の結論は、モジュール名でファイルを保存しないことです。

1