Did you install pysim dependencies with pip and requirements.txt, or with the upstream ubuntu packages? If you installed via pip, I believe the pythonic way to handle this is for dependencies to use semantic versioning, which it appears the cmd2 developers are following. Pip is rolling, and without a version constraint defaults to the latest release. cmd2 released a 2.0.0 version on June 6 (
https://github.com/python-cmd2/cmd2/releases/tag/2.0.0), but the pysim requirements.txt has no version constraint (
https://github.com/osmocom/pysim/blob/master/requirements.txt). Dependency management is known to be "not great" (in quotes as a sarcastic understatement : ) ) in python, and for applications with complex dependencies there are tools like pipenv and poetry (seems to be getting more traction now) that more rigorously isolate the environment and dependencies present, complete with lockfiles and reproducible environments. Since pysim is relatively simple, it is probably sufficient in practice to just add major version constraints to the requirements.txt, although a more rigorous from source install procedure could use poetry and a lockfile, at the cost of needing poetry on your system instead of just pip.
If you installed dependencies via system package manager, I am surprised that ubuntu pulled a new version into their LTS repo, but I expect this is not the case, although I don't have an ubuntu machine handy to verify!
-Matt J.