The only dependency that needs to be installed is twine.
Use pip install twine.
In setup.py ensure:
ISRELEASED = True
Then execute the build command (make sure to clean up dist/ beforehand).
python setup.py sdist bdist_wheel
Now to validate if the package is ready to be pushed:
twine check dist/*
There may be a warning message about a missing description(s), which can be ingored. If the package passed the check, then upload by doing:
twine upload dist/*
This will be followed by a propmt for a username and password. If using a token, then use __token__ as username, and the actual token as the password.