Лучший способ запустить Python 3.7 на Ubuntu 16.04, который поставляется с Python 3.5

18

Я хотел бы избежать бэкпортов, они всегда портят мои посылки.

Поэтому я думал о таких инструментах, как conda / virtualenv /, может быть, даже докер может помочь. Какой самый простой / чистый способ работы с python 3.7 в моей системе?

Benji
источник
1
Посмотрите в pyenv
Нафтули Кей

Ответы:

33

Это должно заставить вас работать с Python 3.7 в Ubuntu 16.04

# Install requirements
sudo apt-get install -y build-essential \
checkinstall \
libreadline-gplv2-dev \
libncursesw5-dev \
libssl-dev \
libsqlite3-dev \
tk-dev \
libgdbm-dev \
libc6-dev \
libbz2-dev \
zlib1g-dev \
openssl \
libffi-dev \
python3-dev \
python3-setuptools \
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

Тогда вы бы просто назвали Python так:

python3.7 ./yourScript.py

Это скриншот нескольких версий Python, сосуществующих в док-контейнере, и того, как их можно различить:

Как называть Python разными версиями

Пип должен быть установлен с этой установкой также. Для установки пакетов используйте этот формат:

pip3.7 --version
Sn3akyP3t3
источник
1
Это работает как шарм. Я смог установить python3.7. единственное предостережение - использовать sudo make altinstall, поскольку доступ к каталогу был не для обычного пользователя. все apt-get также были установлены с помощью sudo. Спасибо огромное за то, что поделились информацией.
Doogle
Принятый ответ работал хорошо для меня, с одной оговоркой; Мне также пришлось apt install libffi-devизбегать следующей ошибки на этапе altinstall (Ubuntu 16.04 LTS):python ModuleNotFoundError: No module named '_ctypes'
moshisushi
@moshisushi Я тоже столкнулся с этой проблемой, когда работал над решением. По этой причине я уже включил libffi-dev в первоначальную установку.
Sn3akyP3t3
1
@Doogle Префиксные команды с sudo, где это необходимо. Спасибо что подметил это. Эти шаги были извлечены из шагов сборки моего Docker-контейнера, которые предполагались пользователем root.
Sn3akyP3t3
3

Я не рекомендовал бы вручную возиться с установками исходного кода и путями. Используйтеpyenv и избавьте себя от неприятностей.

Все, что вам нужно сделать, это:

  • Запустите pyenvустановщик
  • Следуй инструкциям
  • Установите нужные вам версии Python
  • Выберите, какую версию Python вы хотите использовать для данного каталога, или глобально

Например, чтобы установить 3.7, проверьте, какие версии доступны:

pyenv install -l | grep 3.7

Затем запустите:

pyenv install 3.7.1

Теперь вы можете выбрать свою версию Python:

pyenv global 3.7.1

Это переключит вас pythonна 3.7.1. Если вы хотите системный python, запустите:

pyenv global system

Чтобы проверить, какие версии Python доступны, запустите pyenv versions.

slhck
источник
0

Вы можете скачать исходный код с www.python.org, скомпилировать и собрать его из исходного кода, а затем либо:

1) Добавьте путь к исполняемым файлам python PATHи библиотекам LD_LIBRARY_PATH.

2) Сделайте то, что я сделал, скомпилируйте и соберите его из исходного кода и создайте символические ссылки на исполняемые файлы в /usr/bin. Вы можете позвонить, python37чтобы отличить его от того, python 3.5который уже установлен.

Первый метод будет использовать его в вашей среде по умолчанию, тогда как при втором включении вы должны будете указать его с помощью команды, которую вы использовали для символической ссылки. Возможно, вы захотите сначала использовать второй метод, прежде чем установить его по умолчанию, поскольку python 3.7он все еще находится в разработке.

Насир Райли
источник