python 3.7.3 install on debian jessie
Things like conda make setting up complex python projects simpler, but create a whole parallel world. Sometime you want to just fix the current OS, and at most use virtualenvs (I dislike introducing too many layers). I have a debian jessie (8.1) VM (oldstable), and I wanted to have modern python 3 on it, so I decided to install the latest python (3.7.3).
- Install dependencies
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
It turns out that the shipped openssl is too old to build the ssl module, so it is better to get the latest stable openssl and install it (I did it in my home):
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
tar xzf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c
./config --prefix=$HOME
make
make test
make install
- Getting the python source:
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
tar xzf Python-3.7.3.tgz
cd Python-3.7.3
- building and installing it:
make clean
./configure --prefix=$HOME --with-openssl=/home/fawzi LDFLAGS="-Wl,-rpath=/home/fawzi/lib -L/home/fawzi/lib"
make
make install
The LDFLAGS there are really needed (otherwise the ssl module is built, but it cannot be tested and is not installed), and simply setting it in the environment is not enough, you really need to pass them like that… 4. pip Somehow the build process is too smart, and seeing it is on debian it somehow thinks it is a system install, and disables pip, and names python python3, so we fix that:
ln -s ~/bin/python3 ~/bin/python
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install --upgrade pip
- virtualenv Finally we install also virtualenv
pip install virtualenv