This topic is somewhat related to the discussion Require only hard dependencies in pip install - Development - PsychoPy, but it’s not about the number of dependencies rather than improving the installation process.
<Update: rewrote the whole thing to incorporate several PS remarks and make it more readable and to-the-point.>
I’m trying to set it up PsychoPy, and my impression is that the current state of the installation process is a bit messy. I am a user of both Conda and a Pyenv/Pip/Poetry stack, so I’m comparing both.
For starters, there’s confusion about which Python version works. The downloads page recommends 3.6; here in the discussions I saw that 3.8 was the target; the PyPI package shows it’s OK up to 3.10; and conda-forge has packages up to 3.9 (as of 2022 April 5). In practice, regarding a pip-based install (e.g. Poetry), the dependency package PocketSphinx has wheels only up to 3.6, and other packages are limited to 3.8 (pyo, pywinhook etc) in the same way. Irritatingly, these packages don’t have clear Python version limitations, so, lacking recent wheels, pip attempts (and fails) to compile them from source. Compiling doesn’t work most of the time, and shouldn’t be expected to work on a normal user’s computer anyway. It also takes an eternity to resolve the dependency tree, because of all the possible combinations (10+ minutes on Poetry). On the other hand, while conda is happy to install PP on 3.9, that installation has other issues as it’s missing dependencies , and in case those dependencies are required, some of them don’t actually support 3.9 (e.g. tobii-research). It can be argued that this all isn’t PP’s fault, but that’s like turning a blind eye to reality - it’s not possible to change the entire messy python ecosystem, but it’s not that difficult to make it work by specifying package versions that work.
Then, there’s that the Conda and PyPI 2022.1.2 versions have different dependencies. E.g., pyo and python-vlc are not required on conda, or the google api packages, or tobii-research, and so on. Even though I haven’t tested it, I suspect that this comes with a difference in functionality, e.g. the vlc-based moviestim version won’t work with conda out of the box, will it? Furthermore, skipping some packages seems to go against the principle of a monolithic install anyway. If conda can be slimmed
In the referred discussion, the point is made that the current monolithic installation is currently preferred. I can accept this so I won’t argue in favour of a modular PP (even though I do think some parts could be easily broken off, such as the Builder). Yet even with a monolithic package, the documentation could be clearer, conda and pypi versions could be aligned, and version specifications could be narrowed down so that releases are simple and straightforward to install on pip. If some neglected dependency doesn’t actually work on anything but 3.6, then, even though core PP can run on 3.10 in theory, requirements for releases should be limited to a version that works.
So far, I’ve found that git clone’ing the repo and changing setup.cfg to my liking works best, but that way is hardly feasible for every user.