{"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,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","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,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}