Installation¶
Installing python dependencies with Conda¶
USGS-MAP-gwmodels
depends on a number of python packages, many of which have external C library dependencies. The easiest way to install most of these is with conda. A few packages are not available via conda, and must be installed with pip. If you are on the USGS internal network, see the Considerations for USGS Users section below first.
Download and install the 64-bit Anaconda python distribution or Miniconda¶
Anaconda comes with a larger selection of popular data science and scientific packages, making it ideal for those who use python frequently for scientific computing.
Miniconda is a minimal installer with a much smaller footprint, making it ideal for those who only want to use
USGS-MAP-gwmodels
.Make sure to install Anaconda or Miniconda to your username (not at the system level). More often than not, installing at the system level (for all users) seems to result in issues with library dependencies (for example, import of
fiona
orrasterio
failing because gdal isn’t found). It is also good practice to periodically do a clean uninstall of Anaconda, which at the system level requires admin. privileges.
In the installer, at the “Destination Select” step, select “Install for me only.” It should say something about how the software will be installed to your home folder.
If your installer skips the “Destination Select” step, when you get to “Installation Type”, click “Change Install Location” and then “Install for me only.”
Download an environment file¶
requirements.yml for a conda environment with the minimum packages required to run USGS-MAP-gwmodels, or
gis.yml for a more full set of packages in the python geospatial stack, including Jupyter Notebooks and packages needed for testing, documentation and packaging. Note that the environment described by
requirements.yml
is called mapgwm, while the environment ingis.yml
is called gis.Note
To download the above YAML files, simply follow the links to get the raw text and then go to File > Save within your web browser, and save the text as a YAML file (with the .yaml or .yml extension).
Alternatively, clone (using git) or download the
usgs-map-gwmodels
repository, which includes the two environment files at the root level.Note that both of these environment files contain a
pip
section of packages that will be installed with pip, after theconda
packages are installed.
Creating a Conda environment¶
If you are on the USGS internal network, see the Considerations for USGS Users section below first.
Open an Anaconda Command Prompt on Windows or a terminal window on OSX and point it to the location of requirements.yml
or gis.yml
and enter:
conda env create -f requirements.yml
Building the environment will probably take a while. If the build fails because of an SSL error, fix the problem (see Considerations for USGS Users below) and either:
Update the environment
conda env update -f requirements.ymlor remove and reinstall it:
conda env remove -n mapgwm conda env create -f requirements.yml
Keeping the Conda environment up to date¶
The python packages and other open source software libraries that USGS-MAP-gwmodels depends on are continually changing. USGS-MAP-gwmodels aims to mostly follow the Numpy guidelines for package support, which effectively means that the two latest minor versions of Python (e.g. 3.8 and 3.7) and their associated Numpy versions will be supported. However, occasionally backwards compatability with a particular package may be broken in a shorter timeframe, in which case the minimum required version of that package will be specified in the requirements.yml
file. All of this to say that your Conda environment will eventually get out of date. The Conda documentation has instructions for updating packages within a Conda environment, but at some point (perhaps a few times a year) it is good practice to simply delete the environment and rebuild it from the .yml file. Every so often, you may also want to reinstall Anaconda after a clean uninstall.
Installing USGS-MAP-gwmodels¶
There are several ways to install USGS-MAP-gwmodels. Regardless of the method, the installation must be performed in a python
environment with the required dependencies. In the case of the Conda environment created above, the environment must be activated, so that right version of python is called when python
is entered at the command line:
conda activate mapgwm
Installing the latest develop version of USGS-MAP-gwmodels¶
Pip can be used to fetch USGS-MAP-gwmodels directly from GitHub:
pip install git+git://github.com/aleaf/usgs-map-gwmodels@master
Subsequent updates can then be made with
pip uninstall usgs-map-gwmodels
pip install git+git://github.com/aleaf/usgs-map-gwmodels@master
Installing the USGS-MAP-gwmodels source code in-place¶
Alternatively, if you intend to contribute to USGS-MAP-gwmodels (please do!) or update your install frequently, the best route is probably to clone the source code from git and install it in place.
git clone https://github.com/aleaf/usgs-map-gwmodels.git
cd usgs-map-gwmodels
pip install -e .
Note
Don’t forget the .
after pip install -e
!
Your local copy of the USGS-MAP-gwmodels repository can then be subsequently updated with
git pull origin master
Note
If you are making local changes to USGS-MAP-gwmodels that you want to contribute, the workflow is slightly different. See the Contributing to USGS-MAP-gwmodels page for more details.
The advantage of installing the source code in-place is that any changes you make are automatically incorporated into your python environment, without any additional install commands. When debugging in an interactive development environment (IDE) such as Pycharm or VS Code, error tracebacks and inspection features go to the actual source code, not the version installed in the site-packages
folder. Additionally, since this install is done through pip, pip uninstall
will work to remove the package, and the current version of the package (including the latest commit information) will be visible with conda list
.
Considerations for USGS Users¶
Using conda or pip on the USGS network requires SSL verification, which can cause a number of issues. If you are encountering persistant issues with creating the conda environment, you may have better luck trying the install off of the USGS network (e.g. at home). See here for more information about SSL verification on the USGS network, and to download the DOI SSL certificate.
Installing the DOI SSL certificate for use with pip¶
On Windows, create the file
C:\Users\<your username>\AppData\Roaming\pip\pip.ini
. On OSX, create/Users/<your username>/Library/Application Support/pip/pip.conf
.
Include the following in this file:
[global]
cert = <path to DOI certificate file (e.g. DOIRootCA2.cer)>
Note that when you are off the USGS network, you may have to comment out the cert=
line in the above pip configuration file to get pip
to work.
Installing the DOI SSL certificate for use with conda¶
See these instructions.
This may or may not work. Basically, ssl_verify:
needs to be set in your condarc file to point
to a valid SSL certificate, which may be different from the basic DOIRootCA2.cer
file.
You can find the location of your condarc file with:
conda info -a
which displays information about how Conda is configured. Note that you may have multiple condarc files at the system, user and possibly project levels.
Common issues:
Conda Install fails on the USGS network without a certificate, or with an incorrectly formatted certificate. Possible solutions are to either get a correctly formatted SSL certificate from your IT person, or try installing off the network.
Conda Install fails off the USGS network with a certificate (may or may not be correctly formatted). Solution: open your condarc file and comment out the SSL certificate file, if it is specified. E.g.:
ssl_verify: #D:\certificates\DOIRootCA2.cer
Troubleshooting issues with the USGS network¶
If you are on the USGS network, using Windows, and you get this error message:¶
CondaHTTPError: HTTP 500 INTERNAL ERROR for url <https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gettext-0.19.7-2.tar.bz2> Elapsed: 00:30.647993
An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way.
Adding the following line to environment.yml
should work:
- msys2::m2w64-gettext
This tells conda to fetch m2w64-gettext
from the msys2
channel instead. Note that this is only a dependency on Windows,
so it needs to be commented out on other operating systems (normally it wouldn’t need to be listed, but the above HTTP 500 error indicates that installation from the default source location failed.)