Skip to content
Advertisement

Location for Python version on macOS (using universal-installer for 3.10.5)

My very first post here, as new comer to MacOS and Python.

Recently installed python 3.10.5 via macOS 64-bit universal2 installer .pkg file downloaded from python.org > Downloads > mac OS on MacOS 12.4 [M1/Apple Silicon].

In terminal, the command python3 shows the version as 3.10.5.

But echo $PATH is giving me a path leading to

/Library/Frameworks/Python.framework/Versions/3.10/bin

I was expecting a folder for the installed Python version with equal name 3.10.5, however there seems to be no such folder.

Am I missing something?

Advertisement

Answer

TL;DR: 3.10 (major.minor) points already to the latest installed patch-version (5 here). Also recommend to use the Current folder for the PATH environment-variable like below.

From command to binary location

Assume

  • python3 is the command
  • after running python3 --version its version shows as 3.10.5

See also: How to Check Your Python Version | LearnPython.com

Then this command shows the location of the binary for command python3:

which python3

See also: python location on mac osx, What version of Python is on my Mac?

Apple’s Framework convention

The Python installer follows the Framework Versions explained in Apple’s Framework Developer Guide:

Frameworks (like Python instead <Name>) installed by convention in folder:

/System/Library/Frameworks/<Name>.framework/Versions/<major>.<minor>/

with following version numbering-scheme:

<major>.<minor> (like 3.10 for Python 3.10.5)

where <major> denotes the major-version (having breaking changes like 3 here) and <minor> denotes the minor-version (with only small feature-changes and bug-fixes, like 10 here). The patch- or maintenance-version (like 5 here) is ignored in the folder-structure.

A recommended pattern for PATH environment-variable is to use macOS managed-frameworks’ version-alias Current which points to the latest version installed for the framework. Try listing its contents to see the symbolic-link (also symlink or alias) with command ls -l followed by the path, for example:

/Library/ManagedFrameworks/Python/Python3.framework/Versions/Current/

See also: macadmins/python: Framework files for use with popular python macadmin toolsets and symlink – How to get the fully resolved path of a symbolic link in Terminal?

Versioning Schemes

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement