Linux & OS X
************************************************************************
Installing OpenEye Python Toolkits
========================================================================
The two **recommended** ways to install the **OpenEye Python Toolkits**
are:
* *Anaconda* and conda (see section :ref:`section_python_conda`)
* *virtualenv* and pip (see section :ref:`section_python_pip`)
.. warning::
The above two ways are highly recommended since it is considered
harmful to install packages into your global Python installation.
If you do not want to use *Anaconda* or *virtualenv* you can directly
download **OpenEye Python Toolkits** packages and use the PYTHONPATH
environment variable, however this method is only recommended for advanced
users. (see section :ref:`section_python_pythonpath`).
.. seealso::
* :ref:`section_python_single_build` section to install
**OpenEye Python Toolkits** across multiple Linux versions.
.. note::
In order to follow the
`PEP 440 <http://www.python.org/dev/peps/pep-0440>`_ guidelines on
versions, the version label for the python toolkit
is |pypkgversion| instead of |pkgversion|.
.. _section_python_conda:
Anaconda Installation
------------------------------------------------------------------------
The *Anaconda* package can be downloaded from
https://www.continuum.io/downloads for Windows, OSX and Linux
platforms. Follow the very simple instructions given there for
installation. For first time users we also recommend reading
http://conda.pydata.org/docs/test-drive.html and print out
http://conda.pydata.org/docs/_downloads/conda-cheatsheet.pdf for
reference.
.. note::
We recommend the installation of PYTHON 3 Anaconda packages.
This version will default to Python 3 when creating new
environments and building packages.
.. hint::
We recommend using the *Anaconda* package, which is a complete suite
containing hundreds of open source Python packages.
If disk-space is limited, we recommend the mini version of *Anaconda*,
namely, *Miniconda*. *Miniconda* includes conda, its dependencies and
Python.
The *Miniconda* package can be downloaded from
http://conda.pydata.org/miniconda.html for Windows, OSX and Linux
platforms. The instructions for installation can be found here:
http://conda.pydata.org/docs/install/quick.html
All the instructions for installing the **OpenEye Python Toolkits**
are identical whether using the *Anaconda* or *Miniconda* packages.
After downloading and installing *Anaconda*, the **OpenEye Python
Toolkit** package can be installed by the following steps:
#. First create a new conda environment:
.. parsed-literal::
$ conda create -n oepython3 python=3
.. parsed-literal::
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
Solving package specifications: .........
Package plan for installation in environment /home/username/anaconda/envs/oepython3:
The following NEW packages will be INSTALLED:
openssl: 1.0.2h-1
pip: 8.1.2-py35_0
python: 3.5.2-0
readline: 6.2-2
setuptools: 25.1.6-py35_0
sqlite: 3.13.0-0
tk: 8.5.18-0
wheel: 0.29.0-py35_0
xz: 5.2.2-0
zlib: 1.2.8-3
Proceed ([y]/n)? y
After entering "y" to proceed, a new 'oepython3' environment
will be created with Python 3.5.
#. Activate the newly created 'oepython3' environment:
.. parsed-literal::
$ source activate oepython3
(oepython3) $
.. warning::
It is very important to activate a work environment before performing
any additional installations, otherwise packages will be installed
into the global Python environment.
#. Install the **OpenEye Python Toolkits** into the new environment:
.. parsed-literal::
(oepython3) $ conda install -c openeye openeye-toolkits
Solving environment: done
...
The following NEW packages will be INSTALLED:
attrs: 17.3.0-py35h20e33bf_0
ca-certificates: 2017.08.26-h1d4fec5_0
coverage: 4.4.2-py35h8fc71f1_0
hypothesis: 3.38.5-py35h785bf34_0
libgcc-ng: 7.2.0-h7cc24e2_2
openeye-toolkits: 2018.2b2-py35_0 openeye
pluggy: 0.6.0-py35hb428803_0
py: 1.5.2-py35hfe8c5ce_0
pympler: 0.5-py35hc09b5c8_0
pytest: 3.3.2-py35_0
six: 1.11.0-py35h423b573_1
zope: 1.0-py35_0
zope.interface: 4.4.3-py35h9cef842_0
Proceed ([y]/n)? y
...
#. Run the **OpenEye** example `oecheminfo.py` to verify the installation
has completed successfully:
.. parsed-literal::
(oepython3) $ oecheminfo.py
Installed OEChem version: |oechemversion| platform: linux-g++4.x-x64 built: |builddate|
...
.. warning::
Setting the environment variable ``PYTHONPATH`` will override the path
to the Python modules installed in a conda environment.
Make sure ``PYTHONPATH`` is **not** set when using a virtual environment.
.. seealso::
:ref:`section_python_test` section for post-installation testing of the
**OpenEye Python Toolkits**
.. _section_python_pip:
Virtual Environment Installation
------------------------------------------------------------------------
Assuming you have `virtualenv <http://www.virtualenv.org/en/latest/>`_ and
`virtualenvwrapper <http://virtualenvwrapper.readthedocs.org/en/latest/>`_,
the **OpenEye Python Toolkits** can be installed by the following steps:
#. First create a new virtual environment:
.. parsed-literal::
$ mkvirtualenv oepython35
#. Pip install **OpenEye Python Toolkits** into the new environment:
.. parsed-literal::
(oepython35) $ pip install -i https://pypi.anaconda.org/OpenEye/simple OpenEye-toolkits
Or you can also pip install from a tarball downloaded from
http://www.eyesopen.com/downloads.
.. parsed-literal::
(oepython35) $ pip install OpenEye-toolkits-python3-linux-x64-|pypkgversion|.tar.gz
#. Run the **OpenEye** example `oecheminfo.py` to verify the
**OpenEye Python Toolkits** have been successfully installed:
.. parsed-literal::
(oepython35) $ oecheminfo.py
Installed OEChem version: |oechemversion| platform: linux-g++4.x-x64 built: |builddate|
...
.. warning::
Setting the environment variable ``PYTHONPATH`` will override the path
to the Python modules installed in a virtual environment.
Make sure ``PYTHONPATH`` is **not** set when using a virtual environment.
.. seealso::
:ref:`section_python_test` section for post-installation testing of the
**OpenEye Python Toolkits**
.. hint::
When installing different versions of the toolkit (platform specific vs.
single build) in different conda environments, ``pip`` might try to
install the Python packages from the cache. In order to avoid this
problem, use the ``--no-cache-dir`` option.
.. _section_python_pythonpath:
PYTHONPATH Installation
------------------------------------------------------------------------
If you do not have root access or do not want to use *pip*, you
can use the PYTHONPATH installation method.
#. Download the tarball that matches the python version, operating system,
and architecture of your target machine's configuration.
The **OpenEye Python Toolkits** packages
can be download from http://www.eyesopen.com/downloads.
#. Untar the downloaded distribution tarball:
.. parsed-literal::
$ tar xvf OpenEye-toolkits-python3-linux-x64-|pypkgversion|.tar.gz
This will yield a directory structure like the following:
.. parsed-literal::
OpenEye-toolkits-python3-linux-x64-|pypkgversion|/
openeye/
libs/
python3-linux-x64/
docexamples/
examples/
#. Set the ``PYTHONPATH`` environment variable in order to enable the
Python interpreter to find the `openeye`` directory.
The ``PYTHONPATH`` environment variable can be set in
your shell startup script ``~/.bashrc`` For example, if the package was
untarred into the ``/usr/local`` directory:
.. parsed-literal::
PYTHONPATH=/usr/local/OpenEye-toolkits-python3-linux-x64-|pypkgversion|
export PYTHONPATH
The syntax and location may vary if you use a shell
other than ``bash``.
The equivalent can be done in Python code as follows:
.. parsed-literal::
$ python
...
>>> import sys
>>> sys.path.append("/usr/local/OpenEye-toolkits-python3-linux-x64-|pypkgversion|")
Substitute the path to the actual toolkit location.
All the toolkit examples can be found in the ``examples``
directory. From the ``examples`` directory on the command line,
the examples can be run using a command such as:
.. parsed-literal::
$ python oechem/oecheminfo.py
Installed OEChem version: |oechemversion| platform: linux-g++4.x-x64 built: |builddate|
..
.. _section_python_single_build:
Common Linux Single-Build Installation
-------------------------------------------
The default Linux package contains libraries built to be maximally-compatible
with Linux-based systems. It is built specifically to take advantage of
the Linux cross-version compatibility guarantees in such a way that the
Python package will run on many common Linux platforms.
This distribution is built on the *oldest* version of Linux supported by
OpenEye. This means that the libraries will only depend on older Linux system
functions (e.g. libc). Since Linux guarantees forwards compatibility,
the distribution will work across many modern Linux systems.
The distribution is built using a later g++ compiler toolchain.
This allows us to take advantage of optimizations and language features
available in later g++ compiler versions (we're not tied to the g++ from
the oldest Linux OS). This does create a new dependency on later versions
of C++ runtime libraries (libstdc++.so, libgcc_s.so, libgomp.so), however
this is only a potential issue on RedHat 6.
For a PIP installation on RedHat6, the default behavior is to install a
package built against an older gcc version. This version is maximally
compatible with a default RedHat6 system.
One can control the behavior of the pip meta-package installer using the
``OE_PIP_ARCH`` environment variable before executing the ``pip install``
command. One can set the ``OE_PIP_ARCH`` value to the exact desired
distribution or to the special value ``old``, which will always download
a version built exactly on the current platform, if available.
On Linux the ``single-build`` distributions include the string ``linux-x64``
in the name, so a ``pip list`` can be used to identify whether a
single-build or platform-specific distribution has been installed.
.. note::
In previous toolkits, ``OE_ARCH`` was used by the installer for both
Python packages and applications. This caused confusion since the
platform names could be different for the applications and the
Python packages on a platform. Now ``OE_ARCH`` is used exclusively
by the applications and ``OE_PIP_ARCH`` is used exclusively by the
Python toolkits.
On RedHat6, if there is a runtime libstdc++ issue, it will typically result
in a runtime error message containing either ``GLIBCXX`` or ``CXXABI``,
as in the following example:
.. parsed-literal::
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.19'
not found (required by python)
By default, the PIP installation on RedHat6 will install a version of the
python toolkits built using an older gcc compiler so this issue will not
arise. Within a conda environment, one can install the ``libstdcxx-ng``
conda package, available from the main anaconda channel, to install a later
set of g++ runtimes in the current conda environment.
.. _section_python_test:
Unusual Installation Environments
------------------------------------------------------------------------
For assistance with unusual installation environments such as systems
without network access or heterogeneous clusters, please contact
support at [email protected].
Integration Testing
========================================================================
The **OpenEye Python Toolkits** ship with a simple set of integration
tests to make sure all the libraries function as intended. The test suite
is not as exhaustive as the test suite used internally, it is just meant to
ensure the **OpenEye Python Toolkits** infrastructure is working as intended.
.. warning::
Running the integration test requires *scripttest* and *nose*
Python packages. These packages will be installed on-the-fly, if
necessary. Again using *conda* or *virtualenv* environments
will insure that these packages will not be installed into the global
Python environment.
To run the integration test suite (after activating the environment
into which **OpenEye Python Toolkits** has been installed), execute the
following command:
.. parsed-literal::
$ python -m openeye.examples.openeye_tests
A message like the following will be shown if all the tests were run
successfully::
Requirement already satisfied: pytest
Requirement already satisfied: py>=1.4.29
Collecting scripttest
Installing collected packages: scripttest
Successfully installed scripttest-1.3
.........................................
----------------------------------------------------------------------
Ran 42 tests in 95.877s
OK
Tests are skipped when the license is invalid/expired/doesn't exist or
if functionally is not supported on the OS/platform.
For example, when using an license file that contains only license
for the **OEChem TK**, a large number of tests will be skipped::
SSSSSSSSSSSSSSS.......SSSSSSSSSSSSSSSSSSS
----------------------------------------------------------------------
Ran 42 tests in 0.956s
OK (SKIP=34)
Similarly, FastROCS tests are skipped on OS X, Windows, and Linux systems
without appropriate GPU hardware since FastROCS functionality is not available.