...
The following document describes the installation and deployment of Python and all required packages for the LCLS controls production environment.
The currently deployed versions are:
- Python 2.7.4 32-bit (physics default)
- Python 2.7.13 64-bit (softegr default)
Please note that Python deployment is primarily managed using pip, the Python Packaging Authority (PyPA) tool for installing Python packages2.7.x has reached end of life as of January, 2021. Python 2.7.13 deployment in LCLS controls environment has been frozen as of March, 2021.
Base Python Installation
...
- From an internet-accessible machine, download the latest Python 2.7.x 13 source tarball (https://www.python.org/downloads/release/sourcepython-2713/)
Create the Python installation directory structure in LCLS production: $PACKAGE_TOP/python/python<version> (e.g., $PACKAGE_TOP/python/python2.7.13), which should look as follows:
Code Block language bash theme Midnight $ ls /usr/local/lcls/package/python/python2.7.13/linux-x86_64 bin include lib man share src
Transfer the Python source tarball to $PACKAGE_TOP/python/python<version>/src:
Code Block language bash theme Midnight $ ls /usr/local/lcls/package/python/python2.7.13/linux-x86_64/src Python-2.7.13.tgz
Configure the build with the following options:
Anchor bootstrap_pip bootstrap_pip Info --prefix=$PACKAGE_TOP/python/python2.7.13/linux-x86_64 (To create all build directories under the current structure)
--enable-shared (To allow building of shared libraries [.so files], required for packages such as PyQt)
--with-ensurepip=upgrade (To bootstrap the latest pip installer for Python 2.7.x >= 2.7.9)Code Block language bash theme Midnight $ ./configure --prefix=$PACKAGE_TOP/python/python2.7.13/linux-x86_64 --enable-shared --with-ensurepip=upgrade $ make $ make install
Set the environment to use the newly-installed Python instance (example uses a script):
Code Block language bash theme Midnight $ cat init_python2.7.13.bash #!/bin/bash # Sets the user environment to use Python2.7.13 if [ -d /afs/slac/g/lcls ]; then export LCLS_ROOT=/afs/slac/g/lcls else export LCLS_ROOT=/usr/local/lcls fi export ORACLE_HOME=${LCLS_ROOT}/package/oracle/product/11.2.0.4/linux-x86_64 export QT_HOME=${LCLS_ROOT}/package/Qt/Qt-5.9.1/linux-x86_64 export PYTHON_ROOT=${LCLS_ROOT}/package/python/python2.7.13/linux-x86_64 export PATH=${QT_HOME}/bin:${ORACLE_HOME}/bin:${PYTHON_ROOT}/bin:${PATH} export LD_LIBRARY_PATH=${EPICS_BASE_RELEASE}/lib/linux-x86_64:${EPICS_EXTENSIONS}/lib/linux-x86_64:${EPICS_BASE_TOP}/base-cpp-R4-6-0/lib/linux-x86_64:${QT_HOME}/lib:${ORACLE_HOME}/lib:${PYTHON_ROOT}/lib:${PYTHON_ROOT}/build/Python2.7.13/Lib:${LD_LIBRARY_PATH} $ source init_python2.7.13.bash
Check that the core installation includes pip and setuptools (required for building Python modules from source):
Code Block language bash theme Midnight $ pip list pip (9.0.1) setuptools (28.8.0)
...