אז אחרי כל כך הרבה שעות של מלחמה עם הדבר הזה, אני לא מצליח להעלות את האתר לheroku. מקבל את הדבר הזה:
מישהו שנתקל בזה גם ויכול לעזור?
אז אחרי כל כך הרבה שעות של מלחמה עם הדבר הזה, אני לא מצליח להעלות את האתר לheroku. מקבל את הדבר הזה:
מישהו שנתקל בזה גם ויכול לעזור?
כן.
תכנס ל activiti ואז בשורה דל ההעלאה תראה מה רשום בלוג
יכולות להיות מלא סיבות בגדול ושם אמור להופיע על מה זה נפל
כן.
אבל ראיתי את זה:
כלומר שזה כנראה לא הProcfile
מה יש לך בתוך קובץ ה־app?
from flask import Flask, render_template, request
import requests
app = Flask(name)
@app.route(’/’)
def main():
name = request.args.get("name")
year = request.args.get("year")
if not name:
return render_template('index.html', movies={})
url = "http://www.omdbapi.com"
with open('apiKey.txt') as file:
apiKey = file.read()
params = {'apikey': apiKey, 's': name}
try:
params['y'] = int(year)
except ValueError:
pass
resp = requests.get(url, params=params)
try:
resp_json = resp.json()
except ValueError:
return render_template('index.html', movies={})
return render_template('index.html', movies=resp_json.get('Search', {}))
@app.route(’/search’)
def search_by_title():
id = request.args.__getattribute__("choice")
url = "http://www.omdbapi.com"
with open('apiKey.txt') as file:
apiKey = file.read()
params = {'apikey': apiKey, 't': id}
resp = requests.get(url, params=params)
resp_json = resp.json()
return render_template('index.html', chosen_movie=resp_json)
@app.route(’/view_image/<image_name>’)
def search_by_image(image_name):
url = "http://www.omdbapi.com"
with open('apiKey.txt') as file:
apiKey = file.read()
params = {'apikey': apiKey, 't': image_name, 'plot': 'full'}
resp = requests.get(url, params=params)
resp_json = resp.json()
return render_template('index.html', chosen_movie=resp_json)
האם על השרת יש את apiKey.txt?
הקובץ apiKey.txt נמצא תחת אותה תיקייה עם app.py
וכשאני מריץ את זה עם flask run זה עובד נהדר
אני מבין. השאלה היא האם, נניח, הוא ב־gitignore והעלת את הפרויקט ל־Heroku מתוך GitHub
בדיוק. כך נראה הGitHub שלי:
וב .gitignore יש:
apiKey.txt
.venv/
.venv
.venv
ובHeroku הגדרתי אותו כך:
מה מהשלבים פה עשיתי לא בסדר?
האם אתה מבין מה זה אומר Config Vars?
עושה רושם שלא. ראיתי משיחות קודמות שדובר על האפשרות להגדיר משתני סביבה ומצילומי מסך והבנתי מכך שכאן עליי להכניס את הapiKey שלי
עושה רושם שכן זה בדיוק המקום להגדיר משתני סביבה.
שנינו מסכימים ש־apiKey.txt לא קיים בתוך ה־GitHub שלך.
כלומר, ב־Heroku ששואב את הקבצים מ־GitHub אין apiKey.txt.
בקוד שלך אתה מבקש לקרוא קובץ שנקרא apiKey.txt.
מצליח לראות איפה הבעיה?
אני מצליח. רק כדי שאהיה בטוח, הכוונה היא שעליי להכניס משתנה רנדומלי ב app.py, להעלות את הדף כך לgithub, וכשהוא מגיע לheroku, להגדיר כך בצורה חיצונית את הערך של apiKey?
גם אם זה יעבוד פה באתר של heroku זה לא יעבוד כשאנסה להריץ את האתר מעצמי דרך ה flask run
לא רנדומלי – ב־app.py אתה פשוט צריך לקרוא משתנה סביבה עם שם לבחירתך.
כפי ש־Heroku שלך מוגדר כרגע, לפי צילומי המסך שלך, השם של משתנה הסביבה ממנו תשאב את הערך צריך להיות apiKey.
את זה אתה צריך להעלות ל־GitHub, כן.
אני מצטער אני לא מבין. השם שלו יהיה apiKey כן, אבל כשאגדיר אותו אצטרך לתת לו ערך. ואם אני לא אמור לשים שם את המפתח האמיתי ולא ערך רנדומלי, מה צריך להיות שם? יש פונקציה שיודעת לקבל את הערך מהשרתים של heroku?
גם כשאני עושה את זה בצורה הזאת (במקום לקרוא את הקובץ שלא קיים אני כותב apiKey = “The API Key”) זה עדיין מעלה לי את השגיאה הזאת.