Patch python3 headers : ----------------------- # cd /usr/include/python3.7m/ # patch -p1 < PATH_TO/includes_python3.7m.patch Building & running pyfcgi : --------------------------- $ ./autogen.sh $ ./configure $ make # To run foo_pep333.entrypoint() PEP333 application $ spawn-fcgi -d . -n -p 9000 -a 127.0.0.1 -- src/pyfcgi -S -e foo_pep333 -E entrypoint or # To run foo.entrypoint() sending to FCGI python stdout $ spawn-fcgi -d . -n -p 9000 -a 127.0.0.1 -- src/pyfcgi -S -e foo -E entrypoint -A configure script determine python flags, libs & includes paths using python3-config programm. The path can be specified using the PYTHON_CONFIG_PATH environment variable. Example : linking against a debug build of python : --------- $ ./configure PYTHON_CONFIG_PATH=/usr/bin/python3dm-config --enable-debug $ make clean && make $ valgrind --log-file=/tmp/val.log --trace-children=yes spawn-fcgi -d . -n -p 9000 -a 127.0.0.1 -- src/pyfcgi -S -e foo_pep333 -E entrypoint -L '/tmp/foo.log;0xff;{datetime} {msg} {ident}' logging to file example : ------------------------- -L '/tmp/foo.log;0xff;{datetime} {msg} {ident}' uwsgi equivalent : ------------------ uwsgi_python3 --fastcgi-socket 127.0.0.1:9000 --module foo_pep333:entrypoint --processes=5