Файл не найден в приложении, размещенном в pythonanywhere

Здесь есть ответ - Файл не найден на pythonanywhere.com

Но это не работает в моем случае.

Я поместил файл как в основной каталог проекта, так и в каталог /project/static -

В главном каталоге

В статическом каталоге

Мой код -

from flask import Flask, render_template, request
from flask_cors import CORS, cross_origin
from diffdiag import DifferentialDiagScript2 as dd
import os

app = Flask(__name__)
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resources={r"/*": {"origins": "*"}})

@app.route('/')
@cross_origin()
def index():
    module_dir = os.path.dirname(__file__)
    file_path = os.path.join(module_dir, 'literature.csv')
    items = list(line.strip() for line in open(file_path))
    return render_template('index.html', table = items)

Я тоже пробовал -

items = list(line.strip() for line in open(f2))

items = list(line.strip() for line in open('./static/f2'))

items = list(line.strip() for line in open('/home/daddyodevil/add/Automated_DD/f2'))

items = list(line.strip() for line in open('/home/daddyodevil/add/Automated_DD/static/f2'))

Кажется, ничего не работает.

Любая помощь приветствуется.

Редактировать 1 - Добавление полной ошибки

Exception on / [GET]#012Traceback (most recent call last):#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app#012    response = self.full_dispatch_request()#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request#012    rv = self.handle_user_exception(e)#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function#012    return cors_after_request(app.make_response(f(*args, **kwargs)))#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception#012    reraise(exc_type, exc_value, tb)#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise#012    raise value#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request#012    rv = self.dispatch_request()#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request#012    return self.view_functions[rule.endpoint](**req.view_args)#012  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask_cors/decorator.py", line 128, in wrapped_function#012    resp = make_response(f(*args, **kwargs))#012  File "/home/daddyodevil/add/Automated_DD/app.py", line 13, in index#012    items = list(line.strip() for line in open("./static/f2"))#012FileNotFoundError: [Errno 2] No such file or directory: './static/f2'

Редактировать 2. Добавление ошибки, полученной при попытке запустить app.py в pythonanywhere

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
Traceback (most recent call last):
  File "/home/daddyodevil/add/Automated_DD/app.py", line 47, in <module>
    app.run()
  File "/home/daddyodevil/.local/lib/python3.6/site-packages/flask/app.py", line 943, in run
    run_simple(host, port, self, **options)
  File "/home/daddyodevil/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 814, in run_simple
    inner()
  File "/home/daddyodevil/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 774, in inner
    fd=fd)
  File "/home/daddyodevil/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 660, in make_server
    passthrough_errors, ssl_context, fd=fd)
  File "/home/daddyodevil/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 577, in __init__
    self.address_family), handler)
  File "/usr/lib/python3.6/socketserver.py", line 453, in __init__
    self.server_bind()
  File "/usr/lib/python3.6/http/server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/usr/lib/python3.6/socketserver.py", line 467, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use

person daddyodevil    schedule 27.06.2018    source источник
comment
какую ошибку вы получаете? можешь сюда вставить?   -  person Mufeed    schedule 27.06.2018
comment
@Mufeed, сделал это.   -  person daddyodevil    schedule 27.06.2018


Ответы (2)


Запуск app.py в консоли PythonAnywhere вряд ли сработает — он попытается привязаться к порту и прослушивать соединения, и вполне возможно, что кто-то еще использует этот порт.

Проблема, которую вы видите в журнале ошибок вашего веб-сайта, связана с тем, что вы пытаетесь открыть файл './static/f2'. Этот путь должен быть разрешен относительно каталога, в котором запущено приложение, который не обязательно совпадает с каталогом, содержащим модуль, и может также не быть основным каталогом.

Если вы хотите загрузить тот, который находится в том же каталоге, что и модуль, и у вас уже есть код для работы с каталогом модуля, как этот

module_dir = os.path.abspath(os.path.dirname(__file__))

... затем вы можете изменить свой код, чтобы использовать этот module_dir, изменив строку

items = list(line.strip() for line in open("./static/f2"))

... быть таким:

items = list(line.strip() for line in open(os.path.join(module_dir, "./static/f2")))
person Giles Thomas    schedule 28.06.2018

Связанный ответ не работает для вас, потому что вы не следовали ему должным образом. Оберните каталог вашего модуля внутри os.path.abspath(), чтобы получить абсолютный путь, как предполагает связанный ответ:

module_dir = os.path.abspath(os.path.dirname(__file__))

Изменить

Также убедитесь, что этот файл действительно существует относительно каталога вашего модуля:

'./static/f2'

Потому что именно здесь генерируется исключение (посмотрите на последнюю строку трассировки стека):

items = list(line.strip() for line in open("./static/f2"))
#012FileNotFoundError: [Errno 2] No such file or directory: './static/f2'
person Prahlad Yeri    schedule 27.06.2018
comment
Yeti, Это не сработало, а также, если вы видите изображения, которые я приложил, видно, что файл f2 находится как в каталоге main /, так и в каталоге /static/. - person daddyodevil; 28.06.2018
comment
Я вижу, что вы отредактировали текст с другим сообщением об ошибке, чем раньше (OSError: [Errno 98] Address already in use). Означает ли это, что старая ошибка перестала появляться после внесения этого изменения? - person Prahlad Yeri; 28.06.2018
comment
Нет, старая ошибка остается, когда я пытаюсь зайти на daddyodevil.pythonanywhere.com и присутствует в журналах ошибок. 5Новая ошибка, которую я добавил в сообщение, — это та, которую я получаю, когда пытаюсь «запустить» app.py в консоли python в любом месте. - person daddyodevil; 28.06.2018