Две версии Python на Linux. как сделать 2.7 по умолчанию
У меня есть две версии Python на моем Linux:
$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct 8 2013, 15:53:09)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python
Как я могу сделать 2.7 версией по умолчанию, чтобы при вводе python
это ставит меня в 2.7?
7 ответов
Вы, вероятно, на самом деле не хотите менять свой Python по умолчанию.
Ваш дистрибутив установил стандартную систему Python в /usr/bin
и может иметь сценарии, которые зависят от присутствия и выбираются #! /usr/bin/env python
, Обычно вы можете без проблем запускать скрипты Python 2.6 в 2.7, но хотите ли вы рисковать?
Кроме того, обезьяна с /usr/bin
может нарушить способность вашего менеджера пакетов управлять пакетами. И изменение порядка каталогов в вашем PATH
повлияет на многие другие вещи, кроме Python. (На самом деле, чаще /usr/local/bin
впереди /usr/bin
и это может быть тем, чего вы на самом деле хотите, но если у вас есть это наоборот, вероятно, есть веская причина для этого.)
Но вам не нужно менять Python по умолчанию, чтобы система запускалась 2.7 при вводе python
,
Во-первых, вы можете настроить псевдоним оболочки:
alias python=/usr/local/bin/python2.7
Введите это в командной строке или введите в ~/.bashrc
если вы хотите, чтобы изменение было постоянным, и теперь, когда вы печатаете python
он запускает выбранный вами 2.7, но когда какая-то программа в вашей системе пытается запустить скрипт с /usr/bin/env python
он работает по стандарту 2.6.
В качестве альтернативы, просто создайте виртуальную среду из своих 2.7 (или отдельных venvs для разных проектов) и выполняйте свою работу внутри venv.
Добавлять /usr/local/bin
на ваш PATH
переменная среды, ранее в списке, чем /usr/bin
,
Обычно это делается в rc-файле вашей оболочки, например, для bash, вы должны поместить это в .bashrc
:
export PATH="/usr/local/bin:$PATH"
Это заставит вашу оболочку искать сначала python
в /usr/local/bin
до того, как он идет с одним в /usr/bin
,
(Конечно, это означает, что вам также нужно иметь /usr/local/bin/python
указать на python2.7
- если это еще не сделано, вам нужно добавить символическую ссылку.)
Введите команду
which python
//output:
/usr/bin/python
cd /usr/bin
ls -l
Здесь вы можете увидеть что-то вроде этого
lrwxrwxrwx 1 root root 9 Mar 7 17:04 python -> python2.7
ваш стандартный python2.7 мягко связан с текстом 'python'
Так что удалите мягкую ссылку Python
sudo rm -r python
затем повторите приведенную выше команду
ls -l
Вы можете видеть, что мягкая ссылка удалена
-rwxr-xr-x 1 root root 3670448 Nov 12 20:01 python2.7
Затем создайте новую softlink для python3.6
ln -s /usr/bin/python3.6 python
Затем попробуйте команду python
в терминале
//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Тип help
, copyright
, credits
или же license
для дополнительной информации.
Проверьте текущую версию Python:
$ python --version
Затем проверьте Python символическую ссылку на какой файл.
$ ll /usr/bin/python
Выход Ex:
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
Проверьте другие доступные версии Python:
$ ls /usr/bin/python*
Выход Ex:
/usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.4 /usr/bin/python3.4m-config /usr/bin/python3.6m /usr/bin/python3m
/usr/bin/python2 /usr/bin/python2-config /usr/bin/python3.4-config /usr/bin/python3.6 /usr/bin/python3.6m-config /usr/bin/python3m-config
/usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.4m /usr/bin/python3.6-config /usr/bin/python3-config /usr/bin/python-config
Если вы хотите изменить текущую версию python на версию 3.6, отредактируйте файл ~/.bashrc:
vim ~/.bashrc
добавьте строку ниже в конец файла и сохраните:
alias python=/usr/local/bin/python3.6
Чтобы установить pip для Python 3.6
$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip
В случае успеха проверьте текущую версию pip:
$ pip3 -V
Выход Ex:
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
Все ОС поставляются с версией по умолчанию Python и находится в / usr / bin. Все скрипты, которые поставляются с ОС (например, yum), указывают на эту версию python, находящуюся в / usr / bin. Если вы хотите установить новую версию Python, вы не хотите ломать существующие скрипты, которые могут не работать с новой версией Python.
Правильный способ сделать это - установить Python как альтернативную версию.
e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall
Теперь, делая это, существующие сценарии, такие как yum, все еще работают с / usr / bin / python. и ваша версия Python по умолчанию будет установлена в / usr / local / bin. т.е. когда вы набираете python, вы получите 2.7.3
Это происходит потому, что. Переменная $PATH содержит / usr / local / bin перед usr / bin.
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Если python2.7 по-прежнему не вступает в силу в качестве версии Python по умолчанию, вам нужно сделать
export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
Простейший подход; эти три команды помогут вам установить,
Python 2.x - 3.x
- см. версию python, используйте (пусть вы установили версию 2.7.x)
- найдите, где установлен Python 3 , используйте
which python3
(или дает вам текущую установку версии Python) - Последний шаг, используйте алиасинг,
alias python=/usr/bin/python3.6
(один на шаге выше) - А теперь беги снова, ты найдешь,
3.6.x
установлены.
Python 3.x до 2.x (почти то же самое)
- см. версию python, используйте (пусть у вас установлена версия 3.6.x)
- найдите, где установлен Python 2 , используйте
which python2
(which python
показывает, где установлена текущая версия python.) - Последний шаг, используйте алиасинг,
alias python=/usr/bin/python2.7
(тот, который вы получили на шаге выше) - А теперь беги снова,
python --version
, ты найдешь,2.x.x
установлены.
Я полагаю, вы установили версию 2.7 вручную, а версия 2.6 поставляется из пакета?
Ответ прост: удалите пакет Python.
Более сложный: не устанавливать вручную в / usr / local. Сборка пакета с версией 2.7, а затем обновление.
Обработка пакетов зависит от того, какой дистрибутив вы используете.