Метод замораживания приводит к ошибке "Файл существует" в замороженном Flask - PullRequest
0 голосов
/ 11 июля 2020

Кто-нибудь знает как пользоваться замороженными flask ??? Мне нужна помощь в создании веб-сайта и размещении его на github. У меня нет проблем с размещением его на github, но у меня проблема с самим процессом freeze (). Некоторое время это работает, но затем я сталкиваюсь с FileExistsError. Но у меня нет файлов с таким же именем. Маршруты views.py настроены настолько общими, что для них требуется state / state-abbreviation / other.

from flask_frozen import Freezer
from flask import Flask
from website import app

freezer = Freezer(app)
app.config.from_pyfile('settings.py') #use this to not delete files after freezing, and move all static files into project directory for GH to see.

if __name__ == '__main__':
    freezer.freeze()
    # app.run(debug=True)
from flask import render_template, Blueprint, url_for

@core.route('/')
def index():
    return render_template("index.html", states=states_array, other=Other_Resources)


@core.route('/state/<state_code>')
def state(state_code=None):
    if state is None:
        raise ValueError('No state given')
    title = states_dict[state_code]
    return render_template('state_home_page.html', title=title, states=states_array, code=state_code, other=Other_Resources)


@core.route('/state/<state_code>/donate')
def state_donate(state_code=None):
    title = states_dict[state_code]
    try:
        data = state_to_category['Donate'][state_code]
    except KeyError:
        data = []
    return render_template('state_donate.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)

@core.route('/state/<state_code>/organizations')
def state_org(state_code=None):
    title = states_dict[state_code]
    try:
        data = state_to_category['Organization'][state_code]
    except KeyError:
        data = []
    return render_template('state_org.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)

@core.route('/state/<state_code>/blackbusiness')
def state_biz(state_code=None):
    title = states_dict[state_code]
    try:
        data = state_to_category['Business'][state_code]
    except KeyError:
        data = []
    return render_template('state_biz.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)

@core.route('/State_list')
def State_list():
    return render_template("state_list.html", states=states_array, other=Other_Resources)

@error_pages.app_errorhandler(404)
def error_404(error):
    return render_template('error_pages/404.html', states=states_array), 404

И я думаю, что он портится после замораживания состояния / ca /, а затем попытки заморозить state / ca / ​​donate и т. д.

это мое репо https://github.com/mrodriguez3313/Support-bipoc Пожалуйста, проверьте это, чтобы вы могли форкнуть и попробовать сами. У меня есть ветка, в которой я проводил тестирование, называется MAR-freezingapp. Вы можете видеть, что я пытался сделать. Документация Frozen Flask звучит так, будто все должно «просто работать», когда вы запускаете метод .freeze (), он создает файлы stati c в папке build / для вас. Но когда я запускаю python app.py

, это ошибки, которые я получаю

/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalOrganizations' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalPetitions' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalDonate' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'State_list' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'ca' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'mn' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'tx' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'ga' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'la' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'donate' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
  return set(page.url for page in self.freeze_yield())
Traceback (most recent call last):
  File "app.py", line 9, in <module>
    freezer.freeze()
  File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 199, in freeze
    return set(page.url for page in self.freeze_yield())
  File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 199, in <genexpr>
    return set(page.url for page in self.freeze_yield())
  File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 183, in freeze_yield
    new_filename = self._build_one(url)
  File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 344, in _build_one
    os.makedirs(dirname)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: '/c/Users/marco/Documents/Udemy/WebDev/SiteProject/state/ca'

Я попытался посмотреть, могу ли я обернуть .freeze () в try / except, но это все равно остановка. Может я не правильно делаю? Я пробовал запустить freeze.run (debug = True), но он также ломается с теми же ошибками. Я все еще могу запустить приложение, используя flask run. Заранее благодарим вас за любую помощь!

1 Ответ

0 голосов
/ 26 июля 2020

Я клонировал ваш проект и смог успешно заморозить и обслужить его (используя browser-syn c) после добавления завершающих слэшей к маршрутам в core/views.py. У меня была аналогичная проблема с моим проектом, и добавление конечных косых черт к моим маршрутам решило проблему. Более подробное обсуждение здесь: https://www.reddit.com/r/flask/comments/335cyi/a_problem_with_frozenflask/

Также Frozen Flask не гарантирует, что он «просто работает» во всех случаях. Например, в документации упоминается необходимость написания генераторов URL в некоторых случаях. (https://pythonhosted.org/Frozen-Flask/#url -generators ), хотя это не похоже на ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...