-
Type: Task
-
Status: Done (View Workflow)
-
Priority: Normal
-
Resolution: Done
-
Component/s: None
-
Labels:None
We should define which python version, distribution, and modules we expect to have installed.
Even though most modern distribution systems should be fine I suggest that we only support miniconda+products for now, just to minimize the unknowns. But if anyone want to use apt/pip/homebrew and has the following versions it should be fine. Full anaconda 5.2+ distributions should work, though several modules will need to be added.
The MHS products currently require the following python modules. Obviously not all products require all modules; I'll state the main purpose/requirement for each. The listed versions are usually whatever gets installed by conda install on 2018-03-20; in the cases where I know that the version matters I'll add an exclamation point.
In general there will be version conflicts, since we are installing individual modules. So this is more of a guide than a prescription. All versions are expected to be upgradable.
Nearly all modules include sub-modules dependencies, which are not listed.
The absolutely essential packages for all actors are:
- python: 3.6! – asyncio is stable and supported from 3.6
- twisted: 17.9 – for tron_actorcore
- ply: 3.11! – for all tron_actorcore parsing
On top of those, various packages require sets of the following:
- dnspython: 1.16 - for SPS actors, at least.
- numpy: 1.14 – for the detector readouts
- cython: 0.27! - for the detector readouts, several others.
- pyserial: 3.4 – for many device controlling actors, even non-serial ones.
- future: 0.16! – only necessary for code upgraded from python2
- astropy: 3.0.1 – import astropy.io.fits as pyfits
- fitsio: 0.9.11! (from pip) – pyfits can be too inefficient for the H4 ramps or on small machines.
- ruaml_yaml: 0.15.35 – ics_config, others.
This is a painful choice: pyyaml is moribund, ruaml_yamel is on bitbucket and has a new API. Not obvious. - psycopg2-binary: 2.7.4 (from pip) – This has switched to a slightly confusing "binary" install.
- qt: 5.9.5 – for any pyqt GUIs with actorcore parts
- pyqt: 5.9.5 – same
- qt5reactor: 0.5 (from pip) – for any pyqt GUIs with actorcore parts
- matplotlib: 2.2 – for various GUIs.
- fysom: 2.1.5 – for FSMs in tron_actorcore
- sqlalchemy: 1.2.10 – for ics_archiver, any querying code (ics_sps_engineering_stuff, etc.
- gitpython: 2.1.11 – for the version keys.
- redis-py: 3.5.3 – for gen2 status streaming. Also underlying redis pakage
- msgpack: 1.0.2 (from pip) – for gen2 status streaming
- pymongo: 3.11.3 (from pip) – for gen2 status streaming
- ginga : 3.10 (from pip) - for real time displau
The following have been added to the root environment but should perhaps have been put into an different one. Jupyter and opencv have impressive dependency lists.
- jupyter: 1.0.0 – for notebooks
- scipy: 1.1.0 – just because people do use it.
- - opencv: 3.4.1 – for MCS visualization, at least.
- relates to
-
INSTRM-1615 RFC: Consider basing ICS on rubin-env conda/python environment
- Done
-
INSTRM-2310 Update ICS python environment to 3.11, based on rubin-env 7
- Done