Python really only has two package managers. The "old" (and I would argue, far simpler, and thus better): "pip" and the newer (and I would argue Systemd of Python): poetry.
Either will get you where you're going. If you want to move quickly, and don't want to learn a bunch of annoying setup, I highly recommend sticking to pip and a requirements.txt file. If you want virtual environments, you can either go directly to venv, but I prefer pipenv. Poetry will do all of the above for you, but at the expensive of being complicated, and pretty brittle at the moment. It hasn't really matured yet.
None becoming "None" seems to me to be a misunderstanding of what is happening. In Python you shouldn't be coercing types. It is a bad practice, but unlike PHP it hasn't become so ingrained in the language that everyone just accepts it as "the way things have always worked". Every type has a "repr" which represents it as a string for None, the value is "None". This has the rather nice side effect that it will break code where people incorrectly try to coerce a None into a string without knowing what they are doing.
Not sure what you mean by "static class members". If you mean "@classmethod" then even the creators have acknowledged that this was a mistake.