OS Support ========== Background ---------- The philosophy around ``OSNAP`` is to bundle an embedded Python environment (interpreter) with your application. Windows and OSX/MacOS [1]_ are supported. However, currently the support for embedded Python for each OS is quite different from each other (hopefully in the future these will converge). Windows ------- In Python 3.5, `Steve Dower added an embedded Python zip `_ to the general distribution on python.org. This makes embedding Python in an application fairly straightforward. So, this is used directly by ``OSNAP``. OSX/MacOS --------- As of this writing there is no embedded Python for Mac in the general distribution. ``OSNAP`` has two techniques to fill this, each with their pros and cons: Compilation ^^^^^^^^^^^ This technique compiles Python as part of the creation of the Python environment (what's in the ``osnapy`` directory). Mac compliation of Python requires absolute path names, so we predetermine the path that ``osnapy`` will be on the end user's system - i.e. ``/Applications/.app/Contents/MacOS/osnapy/`` - and compile and "install" into that location. The pros/cons are: Pros: - This should be a complete solution since we have a regular Python environment : the Python interpreter, pip, etc. - All the tools are generally available and free. Cons: - We have to compile. - We need to install tools/libraries like XCode and OpenSSL. - There is always a chance that compilation doesn't work for some reason. - It's compiling (actually installing) into the /Applications directory, which requires root (sudo) for part of it. eGenix™ PyRun™ ^^^^^^^^^^^^^^ This uses `eGenix PyRun `_, which is essentially an embedded Python environment. The pros/cons are: Pros: - Prebuilt - Compact - Easy to use (like the Windows Embedded Python) Cons: - Is not necessarily 100% compatible with the general Python distribution. May not work with all packages. Current Default ^^^^^^^^^^^^^^^ In order to support the widest range of end user applications, currently the compilation technique is the default. .. [1] Here we are using OSX and MacOS interchangeably.