https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_b964594d3d957944241961017b9eb19bf02834de44cce93d8e67dd306852dbe346167181e455e33d5268ea01d973d77bb056848546f31794f31a4c31a9da5aa3.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_23f1ae74c634d7e5e0a067c22b7a8c2d79c3ffd9a3b9395fc82c1b3b99635552b994f1f72f532f28ceaff1ea054ea026cd488cd62fa03a4ad91d212b5f3c5a72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_451c3884f51125f7687e5bb07cfab033c04cb7174c33f93213b2af4bad2af13cf48b92a7fa95fc86d7d436f355938a3ac50aa119cdb7c9b6d5a52815c3e6033e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_bfff9e63e857e9ee612e292d4a6edf3ced64d6a756925c953a9d8f77845ff601eca64d73dfa48756b1a9f4a4d6de6127a273bcde16ddeb71a22383460f4e94b0.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f4dd7e1d73ae5eda35ed5ad6aa965b612dbf483ece3ca50c1e8e30ad8dff1c66a160ed75e958e2db399661d229874783e0834ad813a479437035666b8e9e3386.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_4fce0769137d4cd096989b0349bc3c2bbfca79ac311fdf714c41ab24d87551c7b49b756c8a8de090b0714a0ad0560e49fa532ba5a88875ea4afd78efac464df6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_85cec8b07d60426b11040e471babca0d2f9c8dc87a9b56e06cad39828f7f67179e29609100f282a574872c9a93fb635b25416300eb4c97bc5a653d00cf6f8dbf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_6768e5a27d4d357347338621c0d20bd269b126d30eec796193390f2f530fbaea60af84130c46f9786114be65149e661e87d55c339219c90aa76396d7e5b734ef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_2acd6bdff3b680341e8c727da5169a647123eb8fd0a90253161b4c3af272c15d293bf9bb217008bb13f84d1910b0e166798001f8603b6c026d5c20a76c41d47c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_197a9256422962b57e6554d18b18ec6fcb46ae2cc0f54ae291cc8f78c9b59e07e64c43c5f4865514aa95aa2829dcf49c4de0942b94333dd09dcfc7fbb4dc94e1.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_268c9bba6ba649318f0da28c37b09a9bbfa371210f9b6b52faa7fd8ae94abf6b3c3bfeb5df5705c93495ce1152ca58aeabc435d6c6c1bd959025165c3f50e086.js
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • Featured
    • Advanced Python Topics
    • AWS Learning Roadmap
    • JWT Complete Guide
    • Git CheatSheet
  • Explore
    • Programming
    • Development
      • microservices
      • Front End
    • Database
    • DevOps
    • Productivity
    • Tutorial Series
      • C# LinQ Tutorials
      • PHP Tutorials
  • Dev Tools
    • JSON Formatter
    • Diff Checker
    • JWT Decoder
    • JWT Generator
    • Base64 Converter
    • Data Format Converter
    • QR Code Generator
    • Javascript Minifier
    • CSS Minifier
    • Text Analyzer
  • About
  • Contact
CodeSamplez.com

CodeSamplez.com

Programming And Development Resources

You are here: Home / Programming / Python Version Manager: Guide To Multiple Python Versions

Python Version Manager: Guide To Multiple Python Versions

Updated July 25, 2025 by Rana Ahsan Leave a Comment ⏰ 7 minutes

python version manager guide

Have you ever had a project that required an older version of Python while your machine is running a newer one? You’re not alone – managing multiple Python versions can be a headache for developers. Luckily, pyenv makes it easy to switch between Python versions without conflicts. In this beginner-friendly tutorial, we’ll show you step-by-step how to install and use this Python version manager on any OS, so you can seamlessly work with different Python versions.

Why You Need a Python Version Manager?

Python is constantly evolving. Every few months, a new version drops with shiny features (and sometimes breaking changes). That’s great for innovation, but it’s a nightmare when you’re juggling projects with different version requirements. One project needs Python 3.7, another wants Python 3.10, and that random script you downloaded? Yeah, it only works with Python 2.7.

Without a tool like PyEnv, your system Python setup can become a chaotic mess. Worse, you might break critical tools or apps. Managing Python versions isn’t just a convenience—it’s survival.

Here’s what good version management lets you do:

Project Isolation: Keeps your projects separate and prevents dependency conflicts. This is huge.

Testing: Allows you to test your code against multiple Python versions to ensure compatibility.

Flexibility: Gives you the freedom to use the right Python version for the job.

Pro Tip 💡: Learn to set up your python local environment the right way.

Meet pyenv: Your Ultimate Python Version Manager

Now, there are several tools for Python version management, but my personal favourite is pyenv, and the one we’ll be focusing on this today. It’s lightweight, easy to use, and works like a charm on macOS and Linux. (Windows users might consider pyenv-win, which is a port).

Think of pyenv as your Python version remote control. Here’s a simple to understand flow diagram how a python version manager like pyenv roughly works:

a simple flowchart illustrating how python version managers like pyenv selects/uses a specific version

Ready to get your hands dirty? Let’s get pyenv set up on your machine.

Setting Up pyenv (Step-by-Step Tutorial)

1. How To Install pyenv

First, we need to install PyEnv. The method varies depending on your OS, but I’ve got you covered.

On macOS or Linux:

Run the following commands in your terminal:

curl https://pyenv.run | bash  
Bash

This downloads and sets up PyEnv. Simple, right?

If you are a macOS homebrew user, you can use:

brew update
brew install pyenv
Bash

On Windows:

For Windows folks, grab PyEnv-win. Install it using this command on PowerShell:

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
Bash

2. Configure path for your python version manager

Next, update your shell configuration to recognize PyEnv. For macOS/Linux, add these lines to your .bashrc or .zshrc:

 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
 echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
 echo 'eval "$(pyenv init -)"' >> ~/.zshrc  
Bash

Now, restart your terminal, and you’re good to go.

3. Using Pyenv: Install Python Versions

Now, the fun part is installing Python! Let’s say you need Python 3.9. Just run:

pyenv install 3.9.16
Bash

Need Python 2.7 for legacy reasons? No problem:

pyenv install 2.7.18
Bash

You can see all available versions with pyenv install --list.

4. Set a Global Python Version

To set a default version system-wide, use:

pyenv global 3.9.16  
Bash

Boom. Now, whenever you type python in your terminal, it’ll use Python 3.9.16.

5. Use Per-Project Local Version

Here’s the magic: you can set a specific version with the Python version manager just for a specific project. Navigate to your project directory and run:

pyenv local 3.8.10  
Bash

This creates a .python-version File in the project folder. PyEnv will automatically switch to Python 3.8.10 whenever you’re in that directory and trying to use the python command. Check the current version: python --version. You should see Python 3.8.10

6. Verify Your Setup

Check which Python version is active with:

pyenv version  
Bash

And list all installed versions:

pyenv versions  
Bash

If everything looks good, you’re all set!

7. Activate virtual environment for the project

python -m venv venv
source venv/bin/activate
Bash

Pro Tip: Learn more in-depth about working with Python virtual environments.

Common Python Version Manager Troubleshooting Tips

Let’s face it—things don’t always go smoothly. Here are a few hiccups you might hit and how to fix them.

  • Problem: pyenv Command not found.
    Fix: Double-check your shell configuration. Did you add pyenv to your PATH as per step 1 above? Make sure you sourced your .bashrc or .zshrc file as well.
  • Problem: Python build fails during installation.
    Fix: Install the required build dependencies. For Ubuntu, run:sudo apt update && sudo apt install -y make build-essential libssl-dev zlib1g-dev
  • Problem: PyEnv and virtual environments are confusing.
    Fix: Combine PyEnv with PyEnv-Virtualenv for managing virtual environments easily.

Limitations of pyenv

PyEnv is awesome, but it’s not perfect. Here are some quirks:

  • Compatibility: Not every Python version might be available on every system. You can check the available versions using pyenv install -l the command.
  • Performance: Managing multiple versions can use more disk space and might slow down your shell’s startup time. Additionally, switching versions can be slightly slower with tools like Docker for isolated environments.
  • Learning Curve: Setting it up takes slight effort, as we saw in this article, especially if you’re new to Python.

But once you get the hang of it, these downsides are small potatoes compared to the benefits.

Final Thoughts

pyenv saved my sanity, and I hope it does the same for you. Managing Python versions used to feel like wrangling cats. Now? It’s a two-second job.

Start small. Install pyenv, Try switching between versions, and use it for your next project. Before you know it, you’ll wonder how you ever coded without it.

So, what are you waiting for? Go install PyEnv and take control of your Python versions today. Trust me, your future self will thank you.

Got questions? Drop them in the comments below, or check out the official pyenv GitHub readme.

Python Version Manager FAQs

What is the best way to manage multiple Python versions?

Using a version manager like pyenv is generally best due to minimized hassles, no conflict and ability to easy switching between different versions.

How do I install pyenv on Windows?

As recommended in the article itself, pyenv-win is the best way to install pyenv on windows.

Pyenv vs Virtualenv – do I need both?

pyenv manages Python installations, while virtualenv/venv manages environments/packages. They serve different purposes and can be used together seamlessly.

Can I use pyenv for Python 2.x?

Yes, pyenv can install legacy versions like 2.7.* . Note that, python 2.x already reached their End of Life(EOL) status on January 1, 2020 and no official support anymore.

How to uninstall pyenv or a Python version?

To remove a specific version of python, use command pyenv uninstall <version>. Or if you are interested remoe pyenv entirely, depending on your installation approach, use commands such as brew uninstall pyenv to uninstall pyenv from your system

Share if liked!

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket

You may also like


Discover more from CodeSamplez.com

Subscribe to get the latest posts sent to your email.

First Published On: December 19, 2024 Filed Under: Programming Tagged With: python

About Rana Ahsan

Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master’s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others.
Github | X | LinkedIn

Reader Interactions

Leave a ReplyCancel reply

Primary Sidebar

  • Facebook
  • X
  • Pinterest
  • Tumblr

Subscribe via Email

Top Picks

python local environment setup

Python Local Development Environment: Complete Setup Guide

In-Depth JWT Tutorial Guide For Beginners

JSON Web Tokens (JWT): A Complete In-Depth Beginners Tutorial

The Ultimate Git Commands CheatSheet

Git Commands Cheatsheet: The Ultimate Git Reference

web development architecture case studies

Web Development Architecture Case Studies: Lessons From Titans

static website deployment s3 cloudfront

Host Static Website With AWS S3 And CloudFront – Step By Step

Featured Dev Tools

  • JSON Formatter
  • Diff Checker

Recently Published

advanced service worker features

Advanced Service Worker Features: Push Beyond the Basics

service worker framework integration

Service Workers in React: Framework Integration Guide

service worker caching strategies

Service Worker Caching Strategies: Performance & Offline Apps

service worker lifecycle

Service Worker Lifecycle: Complete Guide for FE Developers

what is service worker

What Is a Service Worker? A Beginner’s Guide

Footer

Subscribe via Email

Follow Us

  • Facebook
  • X
  • Pinterest
  • Tumblr

Explore By Topics

Python | AWS | PHP | C# | Javascript

Copyright © 2025

https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f13dcf11fb94e485b4ca3076726bfec26e1b5140755b5832eb9f74f59cf9bbe80cce581c1c583212162a839d9da86336cdb3f16f4c9e6f50a1c814a36f763937.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_c402e38f1879c18090377fb6b73b15ac158be453ecda3a54456494fe8aba42b990c293bae5424e5643d52515ffc2067e0819995be8d07d5bba9107a96780775c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_ffc3511227531cc335353c54c3cbbaa11d0b80e5cb117478e144436c13cd05495b67af2e8950480ed54dbdabcdcef497c90fdb9814e88fe5978e1d56ce09f2cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_d57da9abfef16337e5bc44c4fc6488de258896ce8a4d42e1b53467f701a60ad499eb48d8ae790779e6b4b29bd016713138cd7ba352bce5724e2d3fe05d638b27.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_edc0e9ef106cc9ef7edd8033c5c6fcff6dc09ee901fd07f4b90a16d9345b35a06534f639e018a64baaf9384eee1df305570c1ecad747f41b787b89f53839962b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_5a3aa28cd4eb24db3e3e2acd58230ff5cdc78120b94c2b118227d4c7806ecac03978e1a10404240314f66a3b82af8823768abb8b9eccc5003d198eb077ea12b8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_dccc492dbbfdac33d1411f9df909e849c7268fcf99b43007f278cde3a0adc0ae00e8cae5ec81cf255b9a6eae74e239ba1fa935572af77173219cb081f7d2327d.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_00bacf9e36181aac2b666d110cd9d82257f846766e7041b2d7b3c909b458982931ccc9b203e37098fbdfcf43ca359cf04e3824a724a6789fc204196d3a72ad29.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_9ec67c9c17f4bd4ee02d35306a5bab19fdbef2a0fa3c6781f9fac40bcf7c642f79fefc0059051cc9082c8dece5be9cd4b37e2cf418ab5c3f4952d54517b24824.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_aa5a5d229b421633f4247380e1e8c0a4854f82efb35d13a5b07b7b8fbe22e98842a580f063e5965345a51c477a7f5c2585edf8dd7d896b2438dc61f91d8d970c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_bb8058a9e234a7ffaa98891b1df7f6b8e67410e6984568b151daa05113b8c7f89d7b5918ae73f020998a16f7f5a087a13d6a9a5e5d7c301e2ca12fd9d1f8d177.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_647fb67570c6108fb10ae6785a1abdbecac99ffcf80351d0bef17c3cf783dce497b1895fcdaae997dacc72c359fbfb128cc1540dd7df56deb4961e1cd4b22636.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f7a298a0f1f754623fe3b30f6910ce2c1373f715450750bd7a391571812b00df1917e2be90df6c4efc54dbdfda8616278a574dea02ba2c7a31992768df8db334.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_df30604d5842ef29888c3c1881220dc6d3f8854666d94f0680c5f38aa643c5fb79b10eb9f10998d8856eb24ca265783195937434fd6c2bb8e4846df0277a7fb7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f17fe6fb0993f1703181d7ae9e9ea570f3d33a43afd6f2a4567daa1a6745698c7b8193dc72d50991d2dd87cd3dcf663959206607d193a9b57926d061a1f50aef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_945dcbab2c2a131f3c90f4fb91776b76066d589f84fb55bff25cd5d79a56218000616bfca1f0af9a74f32348693707af49e8fe624de8aa34f1e1c5b6a25709cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_65820d252e1b93596de6697fd5f02483f3e2524a0696c7d698b64745edb32bf5831a90e556842f5f88c8209766cc78ca3a41cf783d20236a9f90d4a7ea7b3e72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_7286884797a1210857e2a36f8ab46604b0034b6abf512380447a5763c873db6a72b8547f660053de0ea69faef1eb64878f39ff4b0ea86c963efab95764a3bf5b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_cbcf6c279ac6c6a25ae138bf964e64a5fd90d22dcdf8a53b6fe7b72cefa51063bfb0181a6e50dd2acdcae2795619887d1d83b10461e44e5103be756f2588d837.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_47965bc586b95810c925b9df3314e0c9a5cd121e70ca0831f87df0bc034695de4f83ecf2def86f737e14614ee138794473cf32cd3082a5d38db9dec0c1f266fa.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_12aa201cea075846d266536aa222d64d4088b851d87f55dac5e611b77add6826c8ebc6e82650fcd1a9e88a05a0072dedd195719c5f64cd4580a0acd8aee05d92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_7859317dea28a85c983d7b2a933704b193600b52929d2d894deae21a5d78f1f9715214d4c2ed1b925e9183146806725621d586779705dea3b651260eb53a2f8a.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_94f64de46d08051edee4a1866fb58a05d45d3491c41989bdc4e0122ab56809465e8628496e274f3b908a4d21c868cf8940ca9df69c13228d46298d04919ca442.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_d87ea86dd0e7ecdd5fe7a5bb67becf943e57c3add866b456034d51663d099031bd563e12f61fdccc044969adf938a8584ed22ccd401ab8b669e20e4f92fb54e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_35311c3d71a3605fad4e1d6b50f3911311cdcc46418bdf56d6d0308a75a69585269ee7582a335e29989adf308fa1a81a10a2c2d4e257e9d680447a4996f6269e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_ed203ae78cbd5d0d7f0de78c3fc2160c89a1f23ae60fe4dedd0f2422beb9b63f801d45786553e4ed4913fc57caaf8cad3112579c33c8914e339634f35e3cc4e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_4d1fae16f3501b97ac1dbc8ca35997b3d3899c98dd478a204920e92de4a093d0c2e9ab1ccbc16b0c3423c0be3ef59d7aaefc6edd559961e5169236aa4c73c7f7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f4fc182ef03c12e9dcadd6febc3dbaa4a29134469057ca9e8ec0be2f2de29a494514ff4b59798e74debf26f78b2df2b3e2665c69b77035761fb463b783202915.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_85c0f2769456e60153b0fd8364b82a035da53384f62de342d9bdca806f3f1ea56486919a00497a18d457949c82bf8bfacc4423fc332074ddf71a49a8fe628fff.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_67f99bef3678c549a14b5f2ff790cce6aba338dca29020755444231b45fa0f980f795e3658496ba70739a099b47b22bc2eab564343ac6132309de3adbbae3455.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_09eecfdd96206ed13830b4b93cfb2cc75cd38083671a34194437b5734b5bb38712209dc335b07e3266ceb3c3a44a155b9bbe5f3e0e1105b19dd45d3def76f020.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_4c089fbdb88e3b624a6f884d3ba1bf606f003bfcd3742376d0d353cd62181dc663aa3811a56361c3100de488fc4d6595a50de2b26f058921ba74f5f2c1b5be00.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_897ff6ac314c5f5e0f496c6af624bd9abf296a02cb5aeb850b9220b6dc3ce2fc4004cb02ed8b59d59d4b9c9d90f050d6eebc1d08ecaebab2f671f7d9367e6410.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_67d1e619e71d36ae00ddcf85ee18628bb4eb64fcb3d6119b463e75cb987013420a21136d19cd03e6634ccc01cfa9af4a357930e4cf6900953b7812efb4f249fb.js