{"id":21361,"library":"frozen-flask","title":"Frozen-Flask","description":"Freezes a Flask application into a set of static files. Version 1.0.2 is current (released 2024) and supports Python >=3.8 with Flask 2 and 3. The library follows a stable release cadence.","status":"active","version":"1.0.2","language":"python","source_language":"en","source_url":"https://github.com/Frozen-Flask/Frozen-Flask","tags":["flask","static-site-generator","freeze","python"],"install":[{"cmd":"pip install frozen-flask","lang":"bash","label":"pip install"}],"dependencies":[{"reason":"Core dependency; version 2.x or 3.x supported.","package":"Flask","optional":false},{"reason":"Transitive dependency via Flask, used internally.","package":"MarkupSafe","optional":false}],"imports":[{"note":"The package name uses underscores, not hyphens.","wrong":"from frozen_flask import Freezer","symbol":"Freezer","correct":"from flask_frozen import Freezer"}],"quickstart":{"code":"from flask import Flask\nfrom flask_frozen import Freezer\n\napp = Flask(__name__)\n\n@app.route('/')\ndef index():\n    return 'Hello, world!'\n\nfreezer = Freezer(app)\n\nif __name__ == '__main__':\n    freezer.freeze()","lang":"python","description":"Basic usage: create a Flask app, attach Freezer, and call freeze()."},"warnings":[{"fix":"Use Python >=3.8 and Flask >=2.","message":"Version 1.0.0 dropped support for Python 2 and PyPy. Flask 2 and 3 only.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use `FREEZER_DESTINATION_DIR` if using Frozen-Flask 1.x.","message":"The `FREEZER_DESTINATION` config option is deprecated in favor of `FREEZER_DESTINATION_DIR` in some docs; check your version.","severity":"deprecated","affected_versions":"<1.0"},{"fix":"Ensure all static assets are linked from pages that are discoverable by the freezer.","message":"Static files need to be included explicitly via the app's static folder or via `url_for('static', ...)` in your templates. Frozen-Flask only processes routes it discovers during crawling.","severity":"gotcha","affected_versions":"all"},{"fix":"Use `@freezer.register_generator` to explicitly add URLs that are not discovered by crawling.","message":"The freezer does not follow external links; if your app links to other sites, those won't be frozen.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'1.0.2':15 '2':26 '2024':19 '3':28 '3.8':23 'applic':7 'cadenc':35 'current':17 'file':13 'flask':3,6,25,36 'follow':31 'freez':4,41 'frozen':2 'frozen-flask':1 'generat':40 'librari':30 'python':22,42 'releas':18,34 'set':10 'site':39 'stabl':33 'static':12,38 'static-site-gener':37 'support':21 'version':14","created_at":"2026-04-27T16:59:30.174832+00:00","updated_at":"2026-04-27T16:59:30.174832+00:00","problems":[{"fix":"Use 'from flask_frozen import Freezer'. Package name is frozen-flask, module is flask_frozen.","cause":"Installed frozen-flask but imported with wrong name.","error":"ModuleNotFoundError: No module named 'flask_frozen'"},{"fix":"Ensure you have at least one route decorated with @app.route and that the app is properly configured.","cause":"No routes discovered because the app doesn't expose any URLs that can be reached via GET requests.","error":"flask_frozen.FlaskFrozenError: No URLs found to freeze. Build will be empty."},{"fix":"Set FREEZER_DESTINATION_DIR to an existing directory or let the freezer create it (default is 'build').","cause":"The freezer tried to write a file but the build directory doesn't exist.","error":"OSError: [Errno 2] No such file or directory: 'build/index.html'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.0.2","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/Frozen-Flask/Frozen-Flask","docs":"https://frozen-flask.readthedocs.io/","changelog":"https://frozen-flask.readthedocs.io/#changelog","pypi":"https://pypi.org/project/frozen-flask/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-28","install_tag":null}}