jon
March 12, 2018, 4:23pm
1
Now that pip installs nearly all the dependencies so easily (not pyo sound, and wx/qt depends on Python version) I feel like we could change the standalone installer to be more of a “network installer” resulting in a more “standard” python installation (maybe a separate installation location, like Applications/PsychoPy/ but otherwise a standard python install.
I created an issue on github - let’s discuss the guts there rather than here - but feel free to add minor comments here too.
opened 04:14PM - 12 Mar 18 UTC
epic
## Origin
The Standalone PsychoPy distribution was designed to get people up … and running easily when they didn't know much about Python and the (many) dependencies that PsychoPy has. It provides a set of working libs and meant we knew the user had all packages installed.
It was designed at a time when many libs couldn't be installed using pip (e.g. needing a double-click download. That is less true these days: almost everything can be installed with `pip` (pyo can't, and wxPython and PyQt can't on Py2.7 but they can on Py3.x)
## Problem
The standalone packages is that the don't provide a "standard" install which makes it harder to interface with additional tools:
- On windows they don't touch the registry so further package installs don't "see" the psychopy python.
- On Mac the Python interpreter doesn't run (due to being frozen with py2app) and that means we can't run from terminal or PyCharm
## Proposed solution
Instead of packaging it ourselves, let's have a network installer package:
1. we want a wizard that takes input from the user:
- where should we install?
- which dependencies do you want (required, hardware, analysis tools etc)?
- do you want shortcuts so that it still looks like a standard app to newbies (windows start menu, mac app bundle)? These need creating at the end as part of script.
- provide USB install scripts similar to psychtoolbox (e.g. see #1698 )
2. The install options could either use an existing Python installation or create a new one (download stock python, silent install it and then use pip from there). Maybe even a virtual env (but then need to be able to switch to it from windows shortcut?)
3. The installer package itself would be a minimal Python could be written and packaged once, but could then install any version (use pip install flags to specify version)
4. For sys admin types this could allow overriding default prefs with 'site' defaults as well?
5. Potentially, If we created the installer wizard using wx, it could be packaged as a mini app, but it could also double-up as a visual pip package-manager within PsychoPy?
This is going to be quite a bit of work. It means creating a wx wizard (or similar cross-platform tool?) and working out the various scripting issues (detecting permissions etc) but the gains would be big