Гайд
Как установить питон, требуемой версии одному пользователю в домашнюю директорию
Вам
не нужно менять системный питон
Никогда
Запускать так
python3.7 -v
Не так
python3 -v
Почему?
which python3.7; which python3
Что требуется поставить для сборки в убунтах 16.хх-18.хх
apt-get install -y \
build-essential git libexpat1-dev libssl-dev zlib1g-dev \
libncurses5-dev libbz2-dev liblzma-dev \
libsqlite3-dev libffi-dev\
libffi-dev tcl-dev linux-headers-generic libgdbm-dev \
libreadline-dev tk-dev \
libdb-dev \
libmpdec-dev \
libncursesw5-dev
Получаем исходники и чекаутим нужную версию
cd /tmp
git clone https://github.com/python/cpython.git
cd cpython
git checkout 3.7
Обращаем внимание
Не
--prefix=$HOME/.local/bin
а
--prefix=$HOME/.local
Инсталлер создаст такие диры
${prefix}/{bin,include,lib,share}
Сделайте
tree .local
до и после
make install
, тогда не возникнет вопросов, что поставил питон
Перед любой операцией - требуется читать ман!
./configure --help
Например если предполагается собирать разные варианты питона
--with-lto
может сильно ускорить процесс
-j4 повесит сборку на 4 ядра, если они у вас конечно есть
./configure --prefix=$HOME/.local --enable-optimizations
make -j4
make install
инсталлер формирует такую структуру для питона
Перед установкой, желательно руками удалить все.
Не директории. В данной директории может быть много софта
.local├── bin
│ ├── 2to3 -> 2to3-3.7
│ ├── 2to3-3.7
│ ├── easy_install-3.7
│ ├── idle3 -> idle3.7
│ ├── idle3.7
│ ├── pip3
│ ├── pip3.7
│ ├── pydoc3 -> pydoc3.7
│ ├── pydoc3.7
│ ├── python3 -> python3.7
│ ├── python3.7
│ ├── python3.7-config -> python3.7m-config
│ ├── python3.7m
│ ├── python3.7m-config
│ ├── python3-config -> python3.7-config
│ ├── pyvenv -> pyvenv-3.7
│ └── pyvenv-3.7
├── include
│ └── python3.7m
├── lib
│ ├── libpython3.7m.a
│ ├── pkgconfig
│ └── python3.7
│ └── man
Если после инстала и сборки
which python3.7
не дает результата - проверьте наличие в PATH ~./local/bin
$ grep "$HOME/.local/bin:" <<< "$PATH"
/home/sim3x/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: