Вообще странно, почему нельзя сделать
pip install package as pac1
А дальше
import pac1
Вот примерно так делается в Rust. Там вообще сам пакет не знает своё имя (его у него нет), оно нужно только что бы найти его в репазитории. А в твоём коде ты можешь этот пакет подключить под любым именем (хоть два раз под разными именами). А т.к. отдельные пакеты могут компилятся с разными настройками, то можно указать что твой код под именем requests видит пакет request-2.3. А твоя зависимость vkontakte будет под именем requests видеть пакет request-1.5.