venv — это самый простой и встроенный способ, который почти в любой среде работает без проблем. virtualenv чуть старше и более универсален, позволяет делать окружения с разными версиями Python, даже если их нет в системе, но требует отдельной установки. Обычно venv хватает, если не нужны заморочки с несколькими интерпретаторами.