Skip to content

Instantly share code, notes, and snippets.

@cwhy
Last active March 29, 2020 11:08
Show Gist options
  • Save cwhy/c5616f16f462382dc7f1a254385fcf1b to your computer and use it in GitHub Desktop.
Save cwhy/c5616f16f462382dc7f1a254385fcf1b to your computer and use it in GitHub Desktop.
Create a local version of python
sudo apt install build-essential zlib1g-dev libssl-dev openssl sqlite libsqlite3-dev libbz2-dev tk-dev libffi-dev
mkdir $HOME/local
cd $HOME/local
mkdir bin
mkdir lib
mkdir include

Create a file in $HOME/local/set_env.py

import os
import sys


home = os.environ['HOME']
local = os.path.join(home, 'local')
vars_append = {
    'PATH': os.path.join(local, 'bin'),
    'LD_LIBRARY_PATH': os.path.join(local, 'lib') + os.pathsep + os.path.join(local, 'lib64'),
    'C_INCLUDE_PATH': os.path.join(local, 'include')
}


def assign(var, val):
    print("export %s=%s" % (var, val))


def remove(var):
    print("unset %s" % var)


if sys.argv[1:][0] == "activate":
    for var, new in vars_append.items():
        if os.environ.get(var):
            if not os.environ.get('OLD_' + var):
                assign('OLD_' + var, '$' + var)
            assign(var, new + os.pathsep + '$' + var)
        else:
            assign(var, new)
    assign('LOCAL_ACTIVATED', 'TRUE')
elif sys.argv[1:][0] == "deactivate":
    if os.environ.get('LOCAL_ACTIVATED'):
        for var, new in vars_append.items():
            if os.environ.get('OLD_' + var):
                assign(var, '$OLD_' + var)
                remove('OLD_' + var)
            elif os.environ.get(var):
                remove(var)
        remove('LOCAL_ACTIVATED')

Add to bashrc

\# activate
eval $(python3 ~/local/set_env.py activate)
\# deactivate
\# eval $(python3 ~/local/set_env.py deactivate)
source ~/.bashrc

create a shell file local/activate:

eval $(python3 ~/local/set_env.py activate)

Compile Python

Download python from https://www.python.org/downloads/ extract to a folder and cd into it

./configure --prefix=$HOME/local
make -j4
make install

Make Python3 default

cd ~/local/bin
ln --symbolic python3 python
ln --symbolic pip3 pip

Install python essential

# Upgrade pip
pip install --upgrade pip

pip install virtualenvwrapper
export WORKON_HOME=$HOME/local/pyEnvs
mkdir -p $WORKON_HOME
#Move this to .bashrc: source ~/local/bin/virtualenvwrapper.sh


pip install notebook
sudo apt-get install libblas-dev
pip install numpy
pip install jupyter_contrib_nbextensions
mkdir -p $(jupyter --data-dir)/nbextensions
cd $(jupyter --data-dir)/nbextensions
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding
chmod -R go-w vim_binding
jupyter contrib nbextension install --user
jupyter nbextension enable vim_binding/vim_binding
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment