Две версии 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

  1. см. версию python, используйте (пусть вы установили версию 2.7.x)
  2. найдите, где установлен Python 3 , используйте which python3 (или дает вам текущую установку версии Python)
  3. Последний шаг, используйте алиасинг, alias python=/usr/bin/python3.6 (один на шаге выше)
  4. А теперь беги снова, ты найдешь, 3.6.x установлены.

Python 3.x до 2.x (почти то же самое)

  1. см. версию python, используйте (пусть у вас установлена ​​версия 3.6.x)
  2. найдите, где установлен Python 2 , используйте which python2 ( which python показывает, где установлена ​​текущая версия python.)
  3. Последний шаг, используйте алиасинг, alias python=/usr/bin/python2.7 (тот, который вы получили на шаге выше)
  4. А теперь беги снова, python --version, ты найдешь, 2.x.x установлены.

Я полагаю, вы установили версию 2.7 вручную, а версия 2.6 поставляется из пакета?

Ответ прост: удалите пакет Python.

Более сложный: не устанавливать вручную в / usr / local. Сборка пакета с версией 2.7, а затем обновление.

Обработка пакетов зависит от того, какой дистрибутив вы используете.

Другие вопросы по тегам