-
-
Save ShawonAshraf/016303b51cb814a49ff4b50b550b9a32 to your computer and use it in GitHub Desktop.
Installs OpenAI Gym on MacOS -
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# See video https://www.youtube.com/watch?v=7PO27i2lEOs | |
set -e | |
command_exists () { | |
type "$1" &> /dev/null ; | |
} | |
safe_brew_install () { | |
while [ $# -gt 0 ] | |
do | |
if brew ls --versions "$1" > /dev/null ; then | |
echo "[CHECK] $1 already installed." | |
else | |
echo "Installing $1..." | |
brew install "$1" | |
fi | |
shift | |
done | |
} | |
tput setaf 54 | |
echo " ββββββ" | |
echo " βββ βββββββ" | |
echo " ββββ βββββ βββ" | |
echo " βββ ββ ββ βββββββ ββ" | |
echo " βββ ββ ββββββββ βββββ" | |
echo " ββ ββ ββ βββββ βββ" | |
echo " βββ βββββ βββ ββ ββ" | |
echo " βββββββββββ ββ ββ βββ" | |
echo " βββ ββ ββββ βββββ" | |
echo " βββββββββ ββ" | |
echo " ββββββββ" | |
echo " ββββββββ βββ ββββββββ" | |
echo " βββββ βββββ βββββ βββ" | |
echo " βββ βββ βββββββββ βββββββ βββββββββ ββ βββ βββ" | |
echo " βββ βββ ββ βββ βββ ββ βββ βββ βββ ββ βββ" | |
echo " βββ βββ ββ βββ βββββββββ βββ βββ ββββββββββ βββ" | |
echo " ββββ ββββ βββ βββ βββ ββ βββ βββ βββββββββββ βββ" | |
echo " ββββββββ ββββββββ βββββββ βββ βββ βββ ββ ββββββββ" | |
echo " ββ " | |
echo " ββ " | |
tput sgr0 | |
echo; echo "Setting up Gym & dependencies. Takes 5-20 minutes, based on internet speed." | |
read -rsp $'>> Press enter to begin <<\n' | |
echo;echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "(Part 1) OpenAIGym folder" | |
echo "*********************************"; echo | |
sleep 1 | |
dir="OpenAIGym" | |
if [ "${PWD##*/}" != $dir ]; then | |
if [ ! -d $dir ]; then | |
mkdir $dir | |
fi | |
cd "$dir" | |
fi | |
echo "(Part 1) Success!" | |
echo; echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "(Part 2) Setup Homebrew" | |
echo "*********************************"; sleep 1; echo | |
echo "Reaching out to Homebrew..." | |
if command_exists brew ; then | |
echo "Brew already installed. Moving forward." | |
else | |
echo "Installing Homebrew. Enter your system password at prompt, then press enter." | |
tput setaf 4 | |
echo "(Tip) After entering password, it takes awhile." | |
tput sgr0 | |
sleep 8 | |
echo "Downloading Homebrew..." | |
# Install Homebrew | |
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" | |
fi | |
echo; echo "(Part 2) Success!" | |
echo; echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "(Part 3) Setup Python 3 / Conda" | |
tput setaf 4 | |
echo "(Tip) Say 'yes' to each prompt that asks" | |
echo "(Tip) Scroll down the license by holding enter" | |
tput sgr0 | |
echo "*********************************"; echo | |
read -rsp $'>> Press enter to continue <<\n' | |
source ~/.bash_profile | |
if command_exists conda ; then | |
echo "Updating conda..." | |
conda update conda | |
case "$(python --version 2>&1)" in | |
*" 3.6"*) | |
echo "Using Python 3.6 already. Continuing..." | |
;; | |
*) | |
echo "Switching to Python 3.6 using Conda..." | |
set +e | |
conda create -n p36 python=3.6 | |
set -e | |
source activate p36 | |
tput setaf 4 | |
echo "(Tip) New terminal tabs/windows must run 'source activate p36' for Gym" | |
echo "(Tip) Add the above command to your .bash_profile for auto-activation" | |
tput sgr0 | |
read -rsp $'>> Press enter to continue <<\n' | |
;; | |
esac | |
else | |
# Install conda | |
echo "Installing Miniconda python package/environment manager..." | |
safe_brew_install wget | |
wget -c -nc https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh | |
chmod +x Miniconda3-latest-MacOSX-x86_64.sh | |
./Miniconda3-latest-MacOSX-x86_64.sh | |
# Dying around here for some reason, suddenly. Is it -nc flag? Or...? | |
echo "Finished installing Miniconda" | |
rm Miniconda3-latest-MacOSX-x86_64.sh | |
echo "Refreshed .bash_profile" | |
source ~/.bash_profile | |
tput setaf 4 | |
echo "(Tip) For Conda to work, restart Terminal after the script completes." | |
tput sgr0 | |
read -rsp $'>> Press enter to continue <<\n' | |
fi | |
echo; echo "(Part 3) Success!" | |
echo; echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "Part 4 | Configure Dependencies" | |
echo "*********************************"; sleep 1; echo | |
echo "Install Xcode Command Line Tools if needed (disregard error)..." | |
read -rsp $'>> Press enter to continue <<\n' | |
set +e | |
xcode-select --install | |
set -e | |
if command_exists xcode-select ; then | |
echo; echo "[CHECK] Xcode Command Line Tools successfully configured." | |
else | |
echo "Failed to install Xcode Command Line tools. Exiting" | |
exit 0 | |
fi | |
safe_brew_install cmake swig boost boost-python sdl2 wget | |
echo; echo "(Part 4) Success!" | |
echo; echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "(Part 5) Install OpenAI Gym" | |
tput setaf 4 | |
echo "(Tip) The pachi-py step takes awhile." | |
tput sgr0 | |
echo "*********************************"; sleep 1; echo | |
pip install 'gym[all]' | |
echo; echo "(Part 5) Success!" | |
echo; echo "**** OPENAI GYM SETUP SCRIPT ****" | |
echo "(Part 6) Download and run an example agent" | |
echo "*********************************"; sleep 1; echo | |
wget -c -nc https://raw.githubusercontent.com/andrewschreiber/scripts/master/example_agent.py | |
# Q: How many sample agents should we download? | |
# A: One for each exercise. Perhaps with hyperparameters generated by random. | |
python example_agent.py | |
echo "[CHECK] Gym is working." | |
echo; echo | |
tput setaf 54 | |
echo " ββββββββ βββ βββ βββββββ βββββββ ββββββββ ββββββββ ββββββββ βββ" | |
echo " ββββββββ βββ βββ ββββββββ ββββββββ ββββββββ ββββββββ ββββββββ βββ" | |
echo " ββββββββ βββ βββ βββ βββ ββββββ ββββββββ ββββββββ βββ" | |
echo " ββββββββ βββ βββ βββ βββ ββββββ ββββββββ ββββββββ βββ" | |
echo " ββββββββ βββββββββ ββββββββ ββββββββ ββββββββ ββββββββ ββββββββ βββ" | |
echo " ββββββββ βββββββ βββββββ βββββββ ββββββββ ββββββββ ββββββββ βββ" | |
tput sgr0 | |
echo; echo; | |
echo "Open AI Gym setup complete." | |
echo "Use 'import gym' to use Gym in python" | |
echo "You can uninstall with 'pip uninstall gym'" | |
echo | |
echo "For next steps, go to the Getting Started with OpenAI Gym Safety blog post" | |
echo | |
echo "www.medium.com/blogpost" | |
echo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment