4 ms·
Pyship: Static Python for desktop apps
- Slippery_John 11y ago> Currently only supports OSX Not sure how this is particularly useful then, since OSX ships with python 2.7. Something like this could be useful on Windows / Linux since they don't necessarily have a python installed, or if it was bundling 3.5.
- burrows 11y agoHave you tried shipping a python application to end users while relying on the OS X system python? In my experience, this is an extremely painful process. You would either need to do all of your development/testing with the system python or ensure that you're development environment is compatible with the system python (including stuff like distutils.util.get_platform(), https://github.com/MacPython/wiki/wiki/Spinning-wheels https://github.com/MacPython/wiki/wiki/Spinning-wheels). What do you do when Apple doesn't update their python with some patch you want?
- makecheck 11y agoYes, I do this for my project. Although, I do not attempt to install any libraries, I keep everything in the application bundle and set environment variables as needed. It is limiting in the sense that I must use the Python version that Apple does but at the same time, the shipping executable is downright tiny compared to most Mac OS X applications.
- burrows 11y agoAre you modifying sys.path() to load the dependencies that are shipped with the app; or some other technique?
- makecheck 11y agoI use the location of the script to find the absolute path to the bundle (MacOS folder), from which I can work backwards using ".." to find other things like bundled libraries. In my case some of the libraries are also compiled so I have a starter script that sets DYLD_LIBRARY_PATH, PYTHONPATH, etc. and runs a 2nd script that can then successfully import whatever is required.
- mwcampbell 11y agoHow is this different from py2app?
- burrows 11y agoI initially tried using py2app/py2exe/cx_Freeze, but stuff kept crashing. They're trying to do something considerably more complicated than my 90 LOC bash script; namely trying to bundle your application, it's dependencies and the python interpreter into one package. This bash script just gives you a python interpreter that should run on any system. From there, your install script can setup a virtualenv, grab dependencies and do whatever else.
- akkartik 11y agoI love the command in the readme for computing dependencies of arbitrary projects.
- p4wnc6 11y agoAnother route is to compile via Cython with the interpreter embedded. https://github.com/cython/cython/tree/master/Demos/embed https://github.com/cython/cython/tree/master/Demos/embed You could take your existing Python code and simply change the .py extension to .pyx and compile with the `--embed` option. Of course, it requires compile dependence on Cython.
- rkeene2 11y agoI wonder if Python can't support something like starkits/starpacks from the Tcl world ? There's a somewhat similar Perl implementation but it extracts files to the real filesystem and executes them rather than just reading from a VFS.
- jofer 11y agoThat's basically what pyinstaller is. It's not quite the same (extracts files to the temp directory), but it's the same general idea. A lot of Python applications on Windows are distributed this way.
- thln666 11y agoSo...like pex but worse? https://github.com/pantsbuild/pex https://github.com/pantsbuild/pex
- topkekz 11y agoNuitka compiles python into a native executable http://nuitka.net/pages/overview.html http://nuitka.net/pages/overview.html
- w_t_payne 11y agoHow is this different from eGenix PyRun?