How to run a Flask Linux-only App on Windows - The AFPy Site


web development

There are in the Python world many Flask Linux-only apps. However in many case, with some twerking we can make them work on Windows. We’ll take the case of the AFPy site.

First fork the AFPy site

Then clone it

git clone https://github.com/<your-username>/site.git

The makefile looks like this

VENV = $(PWD)/.env
PIP = $(VENV)/bin/pip
PYTHON = $(VENV)/bin/python
FLASK = $(VENV)/bin/flask
ISORT = $(VENV)/bin/isort
BLACK = $(VENV)/bin/black

all: install serve

install:
    test -d $(VENV) || python3 -m venv $(VENV)
    $(PIP) install --upgrade --no-cache pip setuptools -e .[test]

clean:
    rm -fr dist
    rm -fr $(VENV)
    rm -fr *.egg-info

check-outdated:
    $(PIP) list --outdated --format=columns

test:
    $(PYTHON) -m pytest tests.py afpy.py --flake8 --isort --cov=afpy --cov=tests --cov-report=term-missing

serve:
    env FLASK_APP=afpy.py FLASK_ENV=development $(FLASK) run

isort:
    $(ISORT) -rc .isort.cfg afpy.py tests.py

black:
    $(VENV)/bin/black afpy.py tests.py

.PHONY: all install clean check-outdated test serve isort black


We also do not see any requirements.txt but see them listed in setup.py

    install_requires=[
        'Flask',
        'Flask-Caching',
        'libsass',
        'docutils',
        'feedparser',
        'python-dateutil',
        'itsdangerous',
    ],

We need to install the package to get the setup working

First setup a virtual environment. If you checked the .gitignore you will see that it is not the usual github one. You will need to add venv/ to it. See reapplying gitignore. Let’s name our virtual environment venv

python -m venv venv

Then we install the package

pip install -e .

Flask apps use flask run to run. But first some variables must be set. From the makefile:

serve:
    env FLASK_APP=afpy.py FLASK_ENV=development $(FLASK) run

Translated to batch

set FLASK_APP=afpy.py
set FLASK_ENV=development

On running you can see a locale error. You can comment it out and rerun.

The AFPy promotes Python in the French world and is a combination of many organising bodies

Note of caution: recomment our the locale line before comitting!

Testing

For testing you will need to run black, flake8, tests.py

Written by

Abdur-Rahmaan Janhangeer

Chef

Python author of 9+ years having worked for Python companies around the world

Suggested Posts

How to disable csrf protection for particular routes in Flask-wtf

Flask-wtf recommends using @csrf.exempt to disable csrf protection for particular routes as in the c...

Read article

Why Choose Flask Over FastAPI

FastAPI positions itself as one of the best choices for API development in Python. The project is po...

Read article

How To Have Django Packages in Flask

Django packages in Flask seems like a far-away dream, but shopyo 4.6.0 allows you to install Shopyo ...

Read article
Free Flask Course