Смотря для чего. pip freeze выгружает все установленные зависимости, которые чаще всего не нужны в requirements.txt (если только ты не пытаешься сделать "слепок" своего venv'a). Помимо как вручную, можно сгенерировать при помощи
pipreqs (не уверен насколько хорошо он работает, но скорее всего просто регуляркой вытаскивает из импортов). Либо использовать
pipenv (сейчас использую его, вроде норм, но с
setup.py возможно будет конфликтовать)