Installing the Newest Version of Python 2.7.x on Older Versions of Ubuntu (like 14.04 and 16.04)
Installing the Newest Version of Python 2.7.x on Older Ubuntu Systems
If you need to upgrade to the newest version of Python 2.7.x, and you're running an older distribution (like Ubuntu 14.04), use the following commands to get and compile the latest version from source (works on Ubuntu 17.04 and older – tested on Ubuntu 14.04):
sudo apt-get install build-essential checkinstall sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev version=2.7.18 cd ~/Downloads/ wget https://www.python.org/ftp/python/$version/Python-$version.tgz tar -xvf Python-$version.tgz cd Python-$version ./configure --with-ensurepip=install make sudo make install
Install requests and hashlib:
sudo rm /usr/lib/python2.7/dist-packages/chardet*.egg-info sudo rm -r /usr/lib/python2.7/dist-packages/chardet sudo rm /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so sudo rm /usr/lib/python2.7/lib-dynload/_hashlib.i386-linux-gnu.so sudo pip install requests sudo easy_install hashlib
You may need to create a symlink for chardet after installing it directly from pip:
ln -sf /usr/local/lib/python2.7/site-packages/chardet /usr/lib/python2.7/dist-packages/chardet
If you get the error of "ImportError: cannot import name _remove_dead_weakref" when running a pam python based authentication script after installing the new version of python, try this fix:
sudo cp /usr/local/lib/python2.7/weakref.py /usr/local/lib/python2.7/weakref_old.py sudo cp /usr/lib/python2.7/weakref.py /usr/local/lib/python2.7/weakref.py
Getting Let's Encrypt Certbot to Work:
Now, you'll need to delete the EFF directory from the /opt directory to avoid old configuration issues that were used for your older version of python. Once you cleanup this directory, you'll run certbot again so it can reconfigure itself.
sudo rm -r /opt/eff.org/ sudo certbot
Old Way
jonathonf is now a very greedy person and has made his repositories private, so this method no longer works as of 12/20/2019.
sudo add-apt-repository ppa:jonathonf/python-2.7 sudo apt-get update sudo apt-get install python2.7
Then, you'll need to cleanup a few leftover system packages manually before installing the newest version of python-pip. If you don't do this, you'll run into problems installing some new packages using pip.
sudo rm /usr/lib/python2.7/dist-packages/chardet*.egg-info sudo rm -r /usr/lib/python2.7/dist-packages/chardet sudo rm /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so sudo rm /usr/lib/python2.7/lib-dynload/_hashlib.i386-linux-gnu.so
Now, you can download and install the newest version of python-pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo python get-pip.py
Getting Let's Encrypt Certbot to Work:
First, you'll need to install a few packages that Certbot (the Let's Encrypt client) uses:
sudo pip install requests sudo pip install hmac
Now, you'll need to delete the EFF directory from the /opt directory to avoid old configuration issues that were used for your older version of python. Once you cleanup this directory, you'll run certbot again so it can reconfigure itself.
sudo rm -r /opt/eff.org/ sudo certbot
You're done.
Full list of commands (for quickly doing all of the above):
sudo -i add-apt-repository ppa:jonathonf/python-2.7 apt-get update apt-get install python2.7 rm /usr/lib/python2.7/dist-packages/chardet*.egg-info rm -r /usr/lib/python2.7/dist-packages/chardet rm /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so rm /usr/lib/python2.7/lib-dynload/_hashlib.i386-linux-gnu.so mkdir -p /root/Downloads cd /root/Downloads curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py pip install requests pip install hmac rm -r /opt/eff.org/ certbot
Rent dedicated game servers from Chicago, Kansas City, Dallas Texas, Wilkes-Barre Pennsylvania, Arizona, Denver Colorado, California, Florida, and Sofia Bulgaria starting as low as $7.45 a month. We Be HostiN (https://webehostin.com)
Tags: 14.04, 16.04, 2.7, 2.7.x, certbot, encrypt, hmac, install, installing, latest, lets, letsencrypt, newest, python, requests, ubuntu