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…
- 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 virtualenvpip install virtualenv
Comments
Adrian
big thanks! suggest : liblzma-dev uuid-dev & –enable-optimizations
Dorish
Clear and working! Thank you. Saved me an upgrade of the computer :-)
Leave a comment
Comments are moderated. Your email address is neither published nor stored, only an md5 hash of it. Required fields are marked with *