While Windows uses the Python Launcher (`py -0`) to switch between versions, on GNU/Linux, tools like `pyenv` offer similar flexibility, although you could even run different versions of Python in virtual environments. Here's how you can manage multiple Python versions on Debian-based servers: ### **Method 1: Using `pyenv` (Recommended)** `pyenv` is a tool specifically designed to manage multiple Python versions on Unix-based systems like GNU/Linux. It allows you to easily switch between different versions without breaking nor affecting the system's default Python installation. #### **Steps to install and use `pyenv`:** 1. **Install dependencies for `pyenv`**: ```bash sudo apt update sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncurses5-dev libncursesw5-dev xz-utils tk-dev \ libffi-dev liblzma-dev python3-openssl git ``` 2. **Install `pyenv`**: ```bash curl https://pyenv.run | bash ``` 3. **Update your shell configuration to include `pyenv` in your PATH.** Add the following lines to `~/.bashrc` or `~/.bash_profile`: ```bash export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" ``` 4. **Restart your shell**: ```bash exec $SHELL ``` 5. **Install different versions of Python using `pyenv`**: ```bash pyenv install 3.9.19 pyenv install 3.12.5 ``` 6. **Set the global or local Python version**: - To set the global default version: ```bash pyenv global 3.12.5 ``` - To set a local version (specific to a directory/project): ```bash pyenv local 3.9.19 # Generates a '.python-version' file ``` 7. **Run a specific version of Python**: ```bash pyenv shell 3.9.19 # Temporarily use Python 3.9.19 ``` 8. **Run a script with Python 3.9.19 without changing the global or local version**: ```bash pyenv shell 3.9.19 && python your_script.py ``` 9. **Show all available versions.** Similar to `py -0` on Windows: ```bash pyenv versions ``` ### **Method 2: Manual Installation and Managing with Virtual Environments** Alternatively, you can manually install different Python versions from source and use virtual environments to manage them. #### **Steps:** 1. **Download and compile the desired Python version**: ```bash wget https://www.python.org/ftp/python/3.9.19/Python-3.9.19.tgz tar -xzf Python-3.9.19.tgz cd Python-3.9.19 ./configure --enable-optimizations make -j $(nproc) sudo make altinstall ``` 2. **Create a virtual environment with the specific version**: ```bash python3.9 -m venv ~/myenv39 source ~/myenv39/bin/activate ``` 3. **To switch between Python versions, activate the relevant virtual environment**. ### **Conclusion** Using `pyenv` is the most convenient method as it simplifies managing multiple Python versions, switching between them, and even creating virtual environments tailored to specific versions. Method 2 is really just included for contrast of thought.