With requests, pass proxies={"http": "http://username:password@IP:20001", "https": "http://username:password@IP:20001"}. The scheme in front of the address is the proxy protocol, not the site one: even for an https destination, the value starts with http://.
SOCKS5
For SOCKS5 the scheme changes to socks5:// and the port to 20481, and the library needs the SOCKS support package installed. Without it, the error talks about an unknown scheme and not about the network.
aiohttp and httpx have their own guides, because the way to pass the address changes.