Python Install
Python Install Guide
Optional LXC Container launch to hold the python installation
lxc launch local:ubuntu-16.04 python-dev-ub-16-04
apt install -y curl ca-certificates && update-ca-certificates
apt upgrade -y
Required packages to build and install python
apt install -y \
wget \
build-essential \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libncurses5-dev \
libncursesw5-dev \
xz-utils \
tk-dev
Build and Install
cd /usr/src
wget http://python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
tar xf Python-3.6.4.tar.xz
cd Python-3.6.4
./configure --enable-optimizations
make altinstall
exit
Note: make altinstall causes it to not replace the built in python executable.
Ensure that secure_path in /etc/sudoers file includes /usr/local/bin. The line should look something like this:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Upgrade pip
sudo pip3.6 install --upgrade pip
Optional add User to sudoers group and allow passwordless priviledge escalation
Add ubuntu to sudoers group
usermod -aG sudo ubuntu
su - ubuntu
sudo -S true # To get rid of:: sudo: no tty present and no askpass program specifie
# Under root: To address same error as above
Add ubuntu user to sudoers
su
touch /etc/sudoers.d/ubuntu
echo 'ubuntu ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/ubuntu
chmod 0440 /etc/sudoers.d/ubuntu
Create and add ~/bin to $PATH
su - ubuntu
mkdir ~/bin
export PATH=$HOME/bin:$PATH
Test Script running from ~/bin
cat << EOM >> ~/bin/helloworld.py
#!/usr/bin/env python3.6
print("Hello, World")
EOM
chmod u+x helloworld.py