Refactor setup.py to requirements.txt