Installation ============ .. raw:: html .. raw:: html .. contents:: :local: Dependencies ------------ + Required + Python 2.6, 2.7, or 3.3+ + Numpy 1.9+ + Argparse (Python 2.6 only) + Recommended + IPython *(better interactive interpreter)* + Matplotlib 1.4+ *(if you want to make 2d plots using viscid.plot.vpyplot)* + Scipy *(enables nonlinear interpolation and curve fitting)* + Numexpr *(for faster math on large grids)* + H5py *(enables hdf5 reader)* + Optional + Seaborn + Mayavi2 [#f1]_ *(if you want to make 3d plots using viscid.plot.vlab)* + PyYaml *(rc file and plot options can parse using yaml)* + Optional for developers + Cython 0.28+ *(if you change pyx / pxd files)* + Sphinx 1.3+ .. [#f1] Installing Mayavi can be tricky. Please :ref:`read this section ` before attempting to install it. Installing Anaconda (optional) ------------------------------ The `Anaconda Python Distribution `_ makes managing dependencies and virtual environments straight forward (and almost pleasant). You can download the full distribution, but it's laden with packages you probably don't need. Also, since ``conda install`` is so easy to use, I recommend the lightweight miniconda: .. code-block:: bash if [ "$(uname -s)" == "Linux" ]; then wget -O miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh elif [ "$(uname -s)" == "Darwin" ]; then curl -o miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh fi bash miniconda.sh -b -p $HOME/local/anaconda rm miniconda.sh source $HOME/local/anaconda/etc/profile.d/conda.sh conda config --set changeps1 no conda update -q conda conda activate You can now add something like this to your bashrc or profile, .. _conda_bashrc_blurb: .. code-block:: bash export _CONDA_ROOT_PREFIX=${HOME}/local/anaconda # <- point to anaconda export CONDA_DEFAULT_ENV=base # <- edit this to taste # there is no need to edit the following lines directly source ${_CONDA_ROOT_PREFIX}/etc/profile.d/conda.sh export CONDA_SHLVL=1 export CONDA_EXE=${_CONDA_ROOT_PREFIX}/bin/conda if [ "${CONDA_DEFAULT_ENV}" = "base" ]; then export CONDA_PREFIX="${_CONDA_ROOT_PREFIX}" else export CONDA_PREFIX="${_CONDA_ROOT_PREFIX}/envs/${CONDA_DEFAULT_ENV}" fi export CONDA_PROMPT_MODIFIER="" export CONDA_PYTHON_EXE="${_CONDA_ROOT_PREFIX}/bin/python" export PATH="${CONDA_PREFIX}/bin:${PATH}" Installing Viscid ----------------- You have a few choices for installing Viscid. Here is a quick breakdown of why you might choose one method over another. + :ref:`Anaconda ` - **+** Installs with a single command - **+** No compiler needed - **+** Available for macOS, Linux, and Windows - **+** Automatically installs recommended dependencies - **+** Optional dependencies are easy to manage using ``conda`` - **-** You won't be able to edit Viscid's source code. You might naively edit the modules in site-packages, but this will confuse the conda package manager beyond repair. + :ref:`PyPI (pip) ` - **+** Installs with a single command - **+** No compiler needed - **+** Available for macOS, Linux, and Windows - **~** Dependencies can be managed using ``pipenv`` (or plain ``pip``) + :ref:`Source ` - **+** Most flexible - **~** Dependencies can be managed using ``pipenv`` (or plain ``pip``) - **-** Requires a C compiler for interpolation and streamline functions - **-** Requires a Fortran compiler for jrrle file support .. _choice1-conda: Choice 1: `Anaconda `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: https://anaconda.org/viscid-hub/viscid/badges/version.svg :target: https://anaconda.org/viscid-hub/viscid :alt: Anaconda Version .. image:: https://anaconda.org/viscid-hub/viscid/badges/platforms.svg :target: https://anaconda.org/viscid-hub/viscid :alt: Anaconda Platforms If you have Anaconda, then installing Viscid and all the recommended dependencies happens with one command, .. code-block:: bash conda install -c viscid-hub viscid You can check that the install succeeded by running, .. code-block:: bash python -m viscid --check .. _choice2-pypi: Choice 2: `PyPI `_ (pip) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: https://img.shields.io/pypi/v/Viscid.svg :target: https://pypi.org/project/Viscid/ :alt: PyPI Binary wheels are available on PyPI for Python 2.7, 3.5, 3.6, and 3.7 on MacOS, Linux, and Windows. .. code-block:: bash pip install viscid If these wheels don't work for you, pip can also install from source (optionally requires a C compiler for interpolation and streamline support, and a Fortran compiler for Jrrle file support). .. code-block:: bash pip install --no-binary :all: viscid Compile errors will not cause Viscid's pip install to fail, and pip hides warning messages unless you use the ``-v`` flag. To check the functionality of your install, run .. code-block:: bash python -m viscid --check .. _choice3-source: Choice 3: Source ~~~~~~~~~~~~~~~~ First, you'll have to clone the Viscid git repository. This should be done in whatever directory you want to store the Viscid source code. I use ``~/src`` myself. .. code-block:: bash git clone https://github.com/viscid-hub/Viscid.git # Optional: set qt5 as the default matplotlib backend mkdir -p ~/.config/matplotlib echo "backend: Qt5Agg" >> ~/.config/matplotlib/matplotlibrc # Optional: copy the default viscidrc file cp Viscid/resources/viscidrc ~/.viscidrc If you are using Anaconda to manage your dependencies, you can use the default Viscid environment to automatically install all Viscid's dependencies, .. code-block:: bash conda env create -f Viscid/resources/viscid37mayavi.yml # if you need mayavi, but don't have OpenGL 3.2, you # will have to use python2.7 (Viscid/resources/viscid27.yml) # this activation must be done for each new command prompt conda activate viscid37mayavi # or viscid27, etc. :ref:`Read this ` if you need help editing your bashrc or profile to set the default Anaconda environment. Viscid should work with native compiler toolchains, but in case you don't have access to native compilers, the Anaconda toolchains should work too. `Check here `_ to find the appropriate packages for your platform. On Windows, you should use the MSVC compiler and Anaconda's ``m2w64-gcc-fortran``. `Read this `_ for more information about acquiring the correct Microsoft compiler. If you are using CPython 3.5 or 3.6, you probably need the MSVC 14 compiler `available here `_. You do **not** need to install visual studio to get the build tools. Now you have a choice about how you want to use Viscid. If you intend to edit Viscid's source code, then I recommend building it inplace. Otherwise, it probably makes more sense to simply install Viscid into your python distribution. Choice 3a: installed ^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash cd Viscid make install # the above is synonymous with `python setup.py install --user` To see if the install succeeded, try .. code-block:: bash # kick the tires python -m viscid --check # run the full test suite make instcheck To pull updates from github in the future, use .. code-block:: bash git pull python setup.py install --user Choice 3b: inplace ^^^^^^^^^^^^^^^^^^ .. code-block:: bash cd Viscid make inplace # the above line is synonymous with `python setup.py build_ext -i` # To set environment variables in Bash profile="${HOME}/.bashrc" echo 'export PATH="${PATH}:'"${PWD}/scripts\"" >> ${profile} echo 'export PYTHONPATH="${PYTHONPATH}:'"${PWD}\"" >> ${profile} source ${profile} To see if the build succeeded, try .. code-block:: bash # kick the tires python -m viscid --check # run the full test suite make check To pull updates from github in the future, use .. code-block:: bash git pull python setup.py build_ext -i Verify Installation ------------------- You can always run the following to check for any installation warnings. It is most helpful when verifying whether or not the C / Fortran modules compiled successfully. .. code-block:: bash python -m viscid --check .. _installing-mayavi: Installing Mayavi (optional) ---------------------------- .. warning:: Do **not** install Mayavi using pip into an Anaconda environment. This will break your environment in a way that requires you to reinstall Anaconda. The issue is that pip happily clobbers some parts of pyqt that are hard linked to a cache. You have been warned. .. note:: I do not recommend using the ``conda-forge`` channel for VTK or Mayavi. These binaries frequently have runtime problems caused by interactions with specific versions of vtk / pyqt. Installing Mayavi can be a mine field of incompatible dependencies. Here is a table to help you choose your poison. If your environment is not in the table, then it is likely not supported by Mayavi / VTK. .. cssclass:: align-left .. cssclass:: table-striped .. cssclass:: table-hover ============= ============== ======================== ================================================= OS Python Version OpenGL / MESA Installation Command ============= ============== ======================== ================================================= MacOS 3.5+ OpenGL 3.2+ ``conda install -c viscid-hub mayavi`` MacOS 2.7 OpenGL 3.2+ ``conda install -c viscid-hub mayavi`` MacOS 2.7 Any ``conda install mayavi vtk=6`` Linux 3.5+ OpenGL 3.2+, MESA 11.2+ ``conda install -c viscid-hub mayavi`` Linux 2.7 OpenGL 3.2+, MESA 11.2+ ``conda install -c viscid-hub mayavi`` Linux 2.7 Any ``conda install mayavi vtk=6`` Windows 3.5+ OpenGL 3.2+ ``conda install -c viscid-hub mayavi`` Windows 2.7 Any ``conda install mayavi vtk=6`` ============= ============== ======================== ================================================= The Enthought Tool Suite requires some confusing environment variables. Effectively you can just cycle through these options until you find a combination that works. .. code-block:: bash export ETS_TOOLKIT='qt' # or "qt4" or "wx" for older versions of pyface export QT_API="pyqt5" # or "pyqt" or "pyside" Also, if you are using MESA to emulate the new OpenGL API for VTK 7+, you may need the following environment variables, .. code-block:: bash export MESA_GL_VERSION_OVERRIDE=3.2 export MESA_GLSL_VERSION_OVERRIDE=150 :ref:`Check here ` for a discussion of Viscid's wrapper functions and workarounds, :doc:`and here ` for an example of Mayavi in action. Workarounds ----------- Ubuntu ~~~~~~ All Linux workarounds are currently incorporated in ``setup.py``. OS X ~~~~ If you see a link error that says ``-lgcc_s.10.5`` can't be found, try running:: sudo su root -c "mkdir -p /usr/local/lib && ln -s /usr/lib/libSystem.B.dylib /usr/local/lib/libgcc_s.10.5.dylib"