Anaconda Python Bash Functions
Conda Env Management
I use conda for all of my Python projects. Because I'm so often making a project directory, then making a conda environment with the same name, I've created the following code to ease the process.
# Create a conda environment with the same name as the current dir
# Example: conda_create_pwd flask Flask-WTF
conda_create_pwd() {
conda create --name "$(basename $(pwd))" python=3 "$@"
}
# take advantage of the fact that the conda env is the same
# as the current dir most of the time
alias source_activate_pwd='source activate $(basename $(pwd))'
For many projects, I like to have a run script with the following code to automatically activate the environment
#!/bin/bash
# exit the script on command errors or unset variables
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
set -euo pipefail
IFS=$'\n\t'
# https://stackoverflow.com/a/246128/295807
readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "${script_dir}"
env_name="$(basename $(pwd))"
set +eu
if [[ "${CONDA_DEFAULT_ENV}" != "${env_name}" ]]; then
# shellcheck disable=SC1091
source activate "${env_name}"
fi
set -eu
# actual application code here, now that I'm in the correct dir
# with the correct python
Anaconda Python Management
On Mac, I use brew
to manage package installation. brew
expects Python
version 2, so I put the following code in my Bash initialization files to
easily switch between versions.
# Making anaconda functional so I can rm it when homebrew whines
anaconda_bin_dir="$HOME/anaconda3/bin"
add_anaconda() {
if [[ "$PATH" != *"${anaconda_bin_dir}"* ]]; then
export PATH="${anaconda_bin_dir}:$PATH"
fi
}
# add it by default
add_anaconda
rm_anaconda() {
export PATH=$(echo $PATH | sed 's|'"${anaconda_bin_dir}:"'||g')
}