Я только что подготовил машину Xenial с vagrant (на основе xenial64-20180228.1.0-virtualbox.box). В моей хост-системе у меня есть Python:

» lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

» python --version
Python 2.7.12

Но в подготовленной машине,

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial


$ python --version
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Ask your administrator to install one of them

$ python3 --version
Python 3.5.2

Если я устанавливаю Python, это выглядит нормально:

vagrant@ubuntu-xenial:~$ sudo apt-get install python
vagrant@ubuntu-xenial:~$ python --version
Python 2.7.12

Это почему? Это нормально, что python не установлен в xenial образе? Нужно ли подготовить его вручную?

Примечание: причина, по которой мне нужен python , а не просто python3 , заключается в том, что ansible явно ищет его при развертывании на эту машину:

/bin/sh: 1: /usr/bin/python: not found

1 ответ1

2

Согласно DistroWatch, Ubuntu Xenial поставляется с Python 3.5.1, что выглядит нетипично по сравнению с другими выпусками, которые обычно поставляются с 2.XX

Обратитесь к комментариям по этому вопросу, чтобы узнать, почему Python 2 вызывается командой python в Ubuntu. В верхнем ответе рекомендуется использовать псевдоним для вызова Python 3 с python , в отличие от символических ссылок и взлома вещей, которые используются в Python 2. Хотя я полагаю, что отсутствие установленного Python 2 нарушит цель этой меры предосторожности, и символическая ссылка может стать жизнеспособным решением.

Вы уверены, что ansible не ищет Python 2? Вот довольно свежая ссылка на их документацию по будущей поддержке Python 3.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .