2012-02-15 31 views
12

He estado tratando de escribir una simple mención grabber para comenzar a utilizar Twitter Api. Sin embargo, he estado experimentando algunas dificultades al inicializar el Api. Ejecutando python2 en archlinux Instalé twitter a través de easy_install, lo construí desde la fuente y lo instalé a través de pip. Nada de esto parece estar funcionando.api = twitter.Api() AttributeError: el objeto 'module' no tiene ningún atributo 'Api

zergling :: ~/dev/kritter » python2 
Python 2.7.2 (default, Jan 31 2012, 13:26:35) 
[GCC 4.6.2 20120120 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import twitter 
>>> api = twitter.Api() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'Api' 

Howdoever the pydoc for twitter está allí. No tengo idea de lo que estoy haciendo mal. Espero que puedan ayudar a

ACTUALIZACIÓN: He intentado utilizar twitter.api() en lugar de twitter.Api() y obtuve el siguiente error: Rastreo (llamada más reciente pasado): Archivo "main.py", línea 8, en api = twitter.api() TypeError: 'módulo' objeto no se puede llamar

Informaciones adicionales:

>>> print dir(twitter) 
['NoAuth', 'OAuth', 'Twitter', 'TwitterError', 'TwitterHTTPError', 'TwitterResponse', 'TwitterStream', 'UserPassAuth', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'api', 'auth', 'oauth', 'read_token_file', 'stream', 'twitter_globals', 'write_token_file'] 
>>> print twitter.__path__ 
['/usr/lib/python2.7/site-packages/twitter-1.7.2-py2.7.egg/twitter'] 
+1

intente "imprimir dir (twitter)" e "imprimir twitter .__ path__", puede ver cuáles son los métodos disponibles del módulo y dónde se encuentra (para asegurarse de que está utilizando el correcto) – tito

+0

@tito : obtuve lo siguiente de esto. usando twitter.api() obtengo otro error beeing: 'api = twitter.api(); TypeError: el objeto 'module' no se puede llamar' – Momo

+0

Bueno, ves que no hay Api o api class/func en el directorio() – tito

Respuesta

16

creo que haya instalado o ne twitter package, y mira otra documentación. Es decir: python-1.7.2 es el proyecto de https://github.com/sixohsix/twitter, mientras mira la documentación http://code.google.com/p/python-twitter/. No hay resultados entre ambos :)

Así, por el que usted ha instalado, si marca el código fuente, un stream example está disponible, y otros varios ejemplos en el pydoc:

from twitter import Twitter 
    # ... 
    twitter = Twitter(
     auth=OAuth(token, token_key, con_secret, con_secret_key))) 

    # Get the public timeline 
    twitter.statuses.public_timeline() 
+0

gracias, esto ayudó totalmente. Solo pensé que easy_install me facilitaría la vida. – Momo

+0

Para entender lo que sucedió, si está utilizando [ipython] (http://ipython.org/), puede imprimir el objeto "twitter" y ver de dónde viene. Si es un archivo .egg y es python_twitter, es posible que deba seguir los sencillos pasos que se describen aquí (me funcionó, instalé python_twitter usando easy_install): http://stackoverflow.com/questions/1231688/how-do -i-remove-packages-installed-with-pythons-easy-install –

+5

Lo había instalado con 'pip install twitter', cuando debería haber sido' pip install python-twitter' – thameera

1

Si está utilizando el contenedor python-twitter. durante el proceso de instalación debe haber creado un archivo egg con el nombre twitter.py.egg cambiarle el nombre por algún otro nombre como help.py.egg, funcionará para usted.

6

He encontrado solución a este problema en el siguiente sitio

[http://himanen.info/solved-attributeerror-module-object-has-no-attribute-api/][1]

Hay dos bibliotecas de Python en conflicto: la biblioteca twitter y biblioteca de Python-twitter. La solución era bastante sencillo:

pip uninstall twitter 

Entonces me acaba de hacer seguro de que Python-twitter fue sin duda instalada:

pip install python-twitter 

Gracias Himanen que trabajó para mí

3

Tengo el mismo error porque mi archivo python se llamaba twitter.py Contenía:

import twitter 
api = twitter.Api (consumer_key=... 

Cambié el nombre del archivo a twitterdata.py, eliminé twitter.pyc y luego funcionó.

Cuestiones relacionadas