How to set Python version by default in FreeBSD?

Opsa picture Opsa · Feb 19, 2012 · Viewed 20.7k times · Source

I'm trying to install the application node, but by default in my environment is python 3, and requires python 2.6. How can I change the default python version in FreeBSD?

# cd /usr/local/bin
# ls -l | grep python
-r-xr-xr-x   2 root  wheel  1246256 Jul 12  2011 python
-r-xr-xr-x   2 root  wheel     1401 Jul 12  2011 python-config
-r-xr-xr-x   2 root  wheel     6060 Jul 12  2011 python-shared
-r-xr-xr-x   2 root  wheel     1408 Jul 12  2011 python-shared-config
-r-xr-xr-x   1 root  wheel     3720 Jul 12  2011 python-shared2.6
-r-xr-xr-x   1 root  wheel     1431 Jul 12  2011 python-shared2.6-config
-r-xr-xr-x   2 root  wheel     6060 Jul 12  2011 python-shared3.1
-r-xr-xr-x   2 root  wheel     1408 Jul 12  2011 python-shared3.1-config
-r-xr-xr-x   1 root  wheel  1182056 Jul 12  2011 python2.6
-r-xr-xr-x   1 root  wheel     1424 Jul 12  2011 python2.6-config
-r-xr-xr-x   2 root  wheel  1246256 Jul 12  2011 python3.1
-r-xr-xr-x   2 root  wheel     1401 Jul 12  2011 python3.1-config

Answer

Roland Smith picture Roland Smith · Feb 19, 2012

You should remove the python meta-port /usr/ports/lang/python. Then set the following variable in /etc/make.conf:

PYTHON_DEFAULT_VERSION='python3.2'

(If you want the latest version. Alternatively you can also use python3.1. Currently, the default is python2.7.)

Now install /usr/ports/lang/python again. Note that ports can request another version of python!

Update: Since October 2013, there is a new way of setting default versions;

20131003:
  AFFECTS: users of lang/python* and ports
  AUTHOR: [email protected]

  The default versions of lang/python* have been changed to support the
  new DEFAULT_VERSIONS variable.

  PYTHON_DEFAULT_VERSION, PYTHON2_DEFAULT_VERSION and
  PYTHON3_DEFAULT_VERSION are deprecated. If you have set them in your
  make.conf, you should change them something like

  DEFAULT_VERSIONS=python=2.7 python2=2.7 python3=3.3