Open josiahseaman opened 6 years ago
Docker may be disqualified if it can't support a GUI.
https://forums.docker.com/t/how-to-run-a-gui-application-on-docker/48437/6
"We can run any application in Docker as long as it can be installed and executed unattended, although we can not see the GUI".
A second disqualification for Docker is that it doesn't run natively on Windows except for very specific circumstances. We could use cx_freeze for windows, but that'd be two separate deploy paths to maintain.
Yes, I think we discussed Docker for ADSM at one point, but ruled it out due to the lack of GUI and how hard it is to deploy to Windows.
The state of freezing Python applications has changed dramatically since we initially went that route on previous projects. I think the process is much smoother now, and has much better compatibility in Python 3.
I would try sticking with cx_freeze just since it is familiar. Another option is PyInstaller that we used on the NPU program.
@josiahseaman Since this project isn't using Django, the majority of the headaches won't exist. Since it is fairly straight forward, I'd give it a try with PyInstaller and use the single file mode.
Thanks for chiming in, Bryan. Cx_freeze was working on Windows until very recently. So I was planning on spending Wednesday trying to get it working again. It's a good solution for Windows but I wasn't able to get it to run on Mac in the couple of hours that I had with one of those computers. It'd be nice to create something that is a really really thin executable for a platform independent set up, that way we could compile for platforms without necessarily having access to them. I've just been wondering if things have improved since 2015 but so far I'm not that much more impressed with any of the options.
As of the end of the day the best contender was Constructor using anaconda.
I wouldn't suggest going with anything related to Anaconda. As we have run into before on your computer, it is great at spreading throughout the system and messing up the PATH for the command line.
We probably don't want to support messing up other people's development environments.
There is currently no way to compile on one OS for all other OSs. To compile for Mac, you will need access to one.
PyInstaller is going to be the best bet for simplicity.
As of Python 3.5 it almost looks like this is supported in core python. The documentation makes it sound so easy.
https://docs.python.org/3.6/using/windows.html#embedded-distribution
It looks like I have the first successful run of PyInstaller since the pip refactor for FluentDNA broke cx_freeze. I have a windows binary and folder that seem to be working correctly.
I think for installation, we're either going to A) revive cx_freeze support that we had in early 2017 to produce a FluentDNA.exe, FluentDNA.dmg (Mac), and /bin/FluentDNA (linux) or B) make a big fat downloadable container with Docker etc. (whatever the kids are into these days). I'm okay with using Constructor or Docker as long as it won't be an endless sinkhole of time.
My only requirement is that it has zero external DLLs dependencies: tkinter, vcvarsall, visual studio, ssh, are all system dependencies I've tripped over before. Linux and Mac systems usually have their own Python version which needs to be ignored and unharmed.
Related Issues
More Googling results: