Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
    languagebash
    themeMidnight
    $ 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
    languagebash
    themeMidnight
    $ 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
    languagebash
    themeMidnight
    $ ./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
    languagebash
    themeMidnight
    $ 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
    languagebash
    themeMidnight
    $ pip list
    pip (9.0.1)
    setuptools (28.8.0)

...