As I described in the previous post “How to undo messed up Python3 🐍 setup”, I’ve cleaned up whatever was inconveniently placed and now I’m going to through the process of setting up Python3 that will make work with Python more manageable and consistent.
Install (upgrade) system Python - a better way
To make sure I’m never going to be using
pip3 commands with or related inconvenience, I’m going to go and manage Python 🐍 versions with
More about PYENV 👇
Since I’ve already got Homebrew (and generally use), I will go with:
$ brew install pyenv
🍺 /opt/homebrew/Cellar/pyenv/2.1.0: 819 files, 2.8MB
Install Python 🐍
To find out either go to python.org
$ brew update && brew upgrade pyenvto make sure
$ pyenv install --list
Available versions: 2.1.3 2.2.3 2.3.7 ... 3.6.6 3.6.7 3.6.8 3.6.9 3.6.10 ... 3.9.7 3.10.0 👈 3.10-dev 3.11-dev activepython-2.7.14 activepython-3.5.4 ...
The current latest stable version is 3.10.0 which I’m going for.
$ pyenv install 3.10.0
python-build: use email@example.com from homebrew python-build: use readline from homebrew Downloading Python-3.10.0.tar.xz... -> https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz Installing Python-3.10.0... python-build: use readline from homebrew python-build: use zlib from xcode sdk Installed Python-3.10.0 to /Users/👻/.pyenv/versions/3.10.0
Make Your Python version default
Once you have the version you need (presumably the latest one) installed with
pyenv, you need to make sure you are going to use it as a default Python from now on.
1.Set the version you want with
pyenv to be global
$ pyenv global <x.x.x> , where
<x.x.x> is the version (
3.10.0 for me at that time)
2.Make sure your shell (ZSH or Bash) picks it up every time
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
3.Check that it works
Open a new terminal tab/window OR reload you current session with
$ source ~/.zshrc(
$ source ~/.bashrc)
and run the following:
$ python --version && pip --version
You should see something like:
Python 3.10.0 pip 21.2.3 from /Users/👻/.pyenv/versions/3.10.0/lib/python3.10/site-packages/pip (python 3.10)
Congrats! There you have it!
A couple of wrap-up points
- Whenever you update your Python3 🐍 with
pyenvyou will need to change global setting of the version you want to work as a default.
- You can switch versions when and if you need to and not necessarily keep them as global setting. 👍