setup.py just loads from requirements.txt Dockerfile pip installs requirements, then extra requirements for improved cacheing travis runs setup install, then installs extra requirements