I am using an C based OCR engine known as tesseract with Python interface library pytesseract to access its core features. Essentially, the library reads the local contents of the installed engine for use in a Python program. However, the library continues to look for the engine when distributed as an executable. How do I instead include the engine self-contained in the executable?
Reading the pytesseract docs, I have found the following section:

Install google tesseract-ocr from
  http://code.google.com/p/tesseract-ocr/. You must be able to invoke
  the tesseract command as "tesseract". If this isn't the case, for
  example because tesseract isn't in your PATH, you will have to change
  the "tesseract_cmd" variable at the top of 'tesseract.py'.

This means you need to have tersseract installed on your target machine independent of your script being exefied or not. Tesseract is a requirement for your script to work. You will need to ask your users to have tesseract installed or you use an "install wizzard" tool which will check if tesseract is installed and if not install it for your users. But this is not the task of pyinstaller. Pyinstaller only exefies your Python script.
Distributed C/C++ Engine with Python