Как правильно импортировать из .py в .py? Всем привет. У меня возникли проблемы при импортировании файла .py. Если бьть более конкретным то у меня не наследуются атрибуты. Файл который я пытаюсь импортировать:import tweepy def api(): consumer_key = 'айзабей' consumer_secret = 'айзабей' access_token = 'айзабей' access_token_secret = 'айзабей'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)
return api Файл в который я пытаюсь импортировать:from flask import Flask, render_template from tweepy_credentials import api app = Flask(__name__) @app.route('/') def index(): public_tweets = api.home_timeline(count=10) return render_template('index.html',public_tweets=public_tweets) if __name__ == '__main__': app.run(debug=True) на выходе у меня AttributeError: 'function' object has no attribute 'home_timeline' проще говоря ссылка на объект api пустая :( ПОМОЖЫТИ!
Проблема здесь в том, что вы вызываете функцию api в файле tweepy_credentials.py, а не объект API. Чтобы решить эту проблему, вам нужно изменить ваш файл tweepy_credentials.py следующим образом:
Теперь ваш файл tweepy_credentials.py будет содержать объект api, а не функцию api. И в вашем файле, в который вы импортируете api, вы можете использовать его как объект:
from flask import Flask, render_template from tweepy_credentials import api app = Flask<strong>name</strong><strong>name</strong><strong>name</strong>
if name == 'main': app.rundebug=Truedebug=Truedebug=True
Теперь при импортировании api он будет содержать объект API, который вы можете использовать для вызова методов, таких как home_timeline. Попробуйте это и посмотрите, поможет ли это решить вашу проблему.
Проблема здесь в том, что вы вызываете функцию api в файле tweepy_credentials.py, а не объект API. Чтобы решить эту проблему, вам нужно изменить ваш файл tweepy_credentials.py следующим образом:
import tweepy
consumer_key = 'your_consumer_key'
consumer_secret = 'your_consumer_secret'
access_token = 'your_access_token'
access_token_secret = 'your_access_token_secret'
auth = tweepy.OAuthHandlerconsumerkey,consumersecretconsumer_key, consumer_secretconsumerk ey,consumers ecret auth.set_access_tokenaccesstoken,accesstokensecretaccess_token, access_token_secretaccesst oken,accesst okens ecret
api = tweepy.APIauthauthauth
Теперь ваш файл tweepy_credentials.py будет содержать объект api, а не функцию api. И в вашем файле, в который вы импортируете api, вы можете использовать его как объект:
from flask import Flask, render_template
from tweepy_credentials import api
app = Flask<strong>name</strong><strong>name</strong><strong>name</strong>
@app.route′/′'/'′/′ def index:
public_tweets = api.home_timelinecount=10count=10count=10 return render_template′index.html′,publictweets=publictweets'index.html',public_tweets=public_tweets′index.html′,publict weets=publict weets
if name == 'main':
app.rundebug=Truedebug=Truedebug=True
Теперь при импортировании api он будет содержать объект API, который вы можете использовать для вызова методов, таких как home_timeline. Попробуйте это и посмотрите, поможет ли это решить вашу проблему.