This process should get you as close to the original source as possible.
Basically what tools like pyinstaller and py2exe do is package libraries and dependencies all together so you can run the 'stand-alone' EXE without having to download them or prepare the machine with a python interpreter.
When you launch the EXE - it is unpackaged in memory. This includes the .pyc files (python code that is converted to bytecode). pyREtic is a tool that allows you to grab those from memory and convert it back to source.
Reverse Engineer Obfuscated Python Bytecode This toolkit
allows you to take a object in memory back to source code, without
needing access to the bytecode directly on disk. This can be useful if
the applictions pyc's on disk are obfuscated in one of many ways.