I would like to avoid backports, they always seem to mess up my packages.
So I was thinking tools like conda / virtualenv / maybe even docker can help. What's the most simple / cleanest way to work with python 3.7 on my system?
This should get you up and running with Python 3.7 on Ubuntu 16.04
# Install requirements sudo apt-get install -y build-essential sudo apt-get install -y checkinstall sudo apt-get install -y libreadline-gplv2-dev sudo apt-get install -y libncursesw5-dev sudo apt-get install -y libssl-dev sudo apt-get install -y libsqlite3-dev sudo apt-get install -y tk-dev sudo apt-get install -y libgdbm-dev sudo apt-get install -y libc6-dev sudo apt-get install -y libbz2-dev sudo apt-get install -y zlib1g-dev sudo apt-get install -y openssl sudo apt-get install -y libffi-dev sudo apt-get install -y python3-dev sudo apt-get install -y python3-setuptools sudo apt-get install -y wget # Prepare to build mkdir /tmp/Python37 cd /tmp/Python37 # Pull down Python 3.7, build, and install wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz tar xvf Python-3.7.0.tar.xz cd /tmp/Python37/Python-3.7.0 ./configure sudo make altinstall
Then you would just call Python like so:
This is a screenshot of multiple versions of Python co-existing in a docker container and how they can be distinguished:
Pip should have been installed with this installation as well. To install packages use this format:
You may wish to wait a couple of weeks/months until Python 3.7 achieves more adoption for library support. Seems like common libraries such as Pillow, Pendulum, Pushbullet, PyPDF2, and Fuzzywuzzy don't yet have compatibility available through pip install and similarly compatible wheels are not yet ready.
You can download the source code from www.python.org, compile and build it from source, and then either:
1) Prepend the path to the python executables to
PATH and the libraries to
2) Do what I did and compile and build it from source and make symlinks to the executables in
/usr/bin. You can call it
python37 to distinguish it from the
python 3.5 which is already installed.
The first method will use it in your environment by default whereas with the second on, you'll have to specify it with the command you used for the symlink. You might want to use the second method first before you make it the default as
python 3.7 is still in development.
I would not recommend manually fiddling around with source code installations and paths. Use
pyenv and save yourself the trouble.
All you have to do is:
For example, to install 3.7, check which versions are available:
pyenv install -l | grep 3.7
pyenv install 3.7.1
Now, you can choose your Python version:
pyenv global 3.7.1
This switches your
python to point to 3.7.1. If you want the system python, run:
pyenv global system
To check which Python versions are available, run