Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User Friendly Installation #56

Open
josiahseaman opened this issue May 9, 2018 · 7 comments
Open

User Friendly Installation #56

josiahseaman opened this issue May 9, 2018 · 7 comments
Assignees

Comments

@josiahseaman
Copy link
Owner

josiahseaman commented May 9, 2018

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

  • Standalone Executable Standalone executable #22 - Cx_freeze has worked on windows at certain points in time. You could say we've already put a lot of work into this and it just needs a little tweak to unbreak some new dependencies. Or that might be the sunk cost fallacy talking...
  • Compile for Linux Compile for Linux #30 - We were just setting up the dev environment on linux. CX freeze dependencies on linux are complicated see the readme.md compilation section.

More Googling results:

@josiahseaman
Copy link
Owner Author

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.

@BryanHurst
Copy link
Collaborator

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.

@BryanHurst
Copy link
Collaborator

@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.

@josiahseaman
Copy link
Owner Author

josiahseaman commented May 14, 2018 via email

@BryanHurst
Copy link
Collaborator

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.

@josiahseaman
Copy link
Owner Author

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

@josiahseaman
Copy link
Owner Author

josiahseaman commented May 17, 2018

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.

  • Python 3.6.5 to comply with PyWin32 223 incompatibility with anything earlier
    • PyWin32 is a dependency of PyInstaller
  • Download https://www.lfd.uci.edu/~gohlke/pythonlibs/#blist blist‑1.3.6‑cp36‑cp36m‑win_amd64.whl
  • D:\python365\Scripts\easy_install.exe "D:\josiah\Documents\Downloads\blist-1.3.6-cp36-cp36m-win_amd64.whl"
  • Pip installed Pillow==5.1.0 (latest) for reasons
  • PyInstaller DDV\fluentdna.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants