понятная ситуация установки python с разными версиями

У меня запутанная ситуация с моей установкой Python на Ubuntu.

$ python --version
Python 3.4.0
$ python2 --version
Python 3.4.0
$ python3 --version
Python 3.4.0
$ ls -la /usr/bin/python2
lrwxrwxrwx 1 root root 9 Dez 21  2013 /usr/bin/python2 -> python2.7
$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mär 23  2014 /usr/bin/python3 -> python3.4

Все, что я хотел, - это запуск Python3.4 под командой «python». Поэтому я копирую / usr / bin / python3 в / usr / bin / python, потому что python --version вернул 2.7, а теперь возвращает 3.4. Я не знаю, было ли это ошибкой.

Я попытался установить пакет с pip, но это не удалось. Затем я попытался переустановить python (sudo apt-get install --reinstall python), и терминал дал мне подсказку запустить «apt-get -f install» без имени пакета.

$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
8 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up python2.7 (2.7.6-8) ...
  File "/usr/lib/python2.7/py_compile.py", line 114
    except Exception,err:
                    ^
SyntaxError: invalid syntax
dpkg: error processing package python2.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of python:
 python depends on python2.7 (>= 2.7.5-1~); however:
  Package python2.7 is not configured yet.

dpkg: error processing package python (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-dateutil:
 python-dateutil depends on python (>= 2.7); however:
  Package python is not configured yet.
 python-dateutil depends on python (<< 2.8); however:
  Package python is not configured yet.
 python-dateutil depends on python:any (>= 2.7.1-0ubuntu2); however:
  Package python is not configured yet.

dpkg: error processing package python-dateutil (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-gst-1.0:
 python-gst-1.0 depends on python (>= 2.7); however:
  Package python is not configured yet.
 python-gst-1.0 depends on python (<< 2.8); however:
  Package python is not configured yet.
 python-gst-1.0 depends oNo apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                                                   No apport report written because the error message indicates its a followup error from a previous failure.
                                              No apport report written because MaxReports is reached already
                                                                                                            No apport report written because MaxReports is reached already
                                                                                                                                                                          No apport report written because MaxReports is reached already
                                         No apport report written because MaxReports is reached already
                                                                                                       No apport report written because MaxReports is reached already
                                                                                                                                                                     n python:any (>= 2.7.1-0ubuntu2); however:
  Package python is not configured yet.

dpkg: error processing package python-gst-1.0 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-pyparsing:
 python-pyparsing depends on python (>= 2.7); however:
  Package python is not configured yet.
 python-pyparsing depends on python (<< 2.8); however:
  Package python is not configured yet.
 python-pyparsing depends on python:any (>= 2.7.1-0ubuntu2); however:
  Package python is not configured yet.

dpkg: error processing package python-pyparsing (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-tz:
 python-tz depends on python (>= 2.7); however:
  Package python is not configured yet.
 python-tz depends on python (<< 2.8); however:
  Package python is not configured yet.
 python-tz depends on python:any (>= 2.7.1-0ubuntu2); however:
  Package python is not configured yet.

dpkg: error processing package python-tz (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-support:
 python-support depends on python (>= 2.5); however:
  Package python is not configured yet.

dpkg: error processing package python-support (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python-matplotlib:
 python-matplotlib depends on python-dateutil; however:
  Package python-dateutil is not configured yet.
 python-matplotlib depends on python-pyparsing; however:
  Package python-pyparsing is not configured yet.
 python-matplotlib depends on python-tz; however:
  Package python-tz is not configured yet.
 python-matplotlib depends on python (<< 2.8); however:
  Package python is not configured yet.
 python-matplotlib depends on python (>= 2.7); however:
  Package python is not configured yet.
 python-matplotlib depends on python-support (>= 0.90.0); however:
  Package python-support is not configured yet.

dpkg: error processing package python-matplotlib (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 python2.7
 python
 python-dateutil
 python-gst-1.0
 python-pyparsing
 python-tz
 python-support
 python-matplotlib
E: Sub-process /usr/bin/dpkg returned an error code (1)
$ 

Я уже пытался изменить ссылки обратно:

$ sudo cp /usr/bin/python2.7 /usr/bin/python
$ python --version
Python 3.4.0
$ sudo cp /usr/bin/python2 /usr/bin/python
$ python --version
Python 3.4.0
$

Что мне делать, чтобы получить python2 и python3? Как я могу переустановить python с помощью apt-get?

3
задан 27 May 2015 в 16:58

1 ответ

Python 2 и 3 живых очень счастливо друг рядом с другом на большинстве установок Ubuntu. Что Вы описываете (python3 отображение на двоичный файл Python 2), не нормально вообще.

python потребности, которые будут отображены до Python 2 по умолчанию. Существуют различные сценарии, которые не являются совместимым Python 3 (это не назад совместимо), поэтому при повреждении отображения от python, Вы повреждаете систему.

Вы уже видите, что из postinst сценариев пакетов, которые ожидают Python 2.

Вот то, как мой python отображается (14,04 установок):

$ readlink -f $(which python)
/usr/bin/python2.7

Поэтому позвольте нам просто повторно отобразиться /usr/bin/python отступите там:

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python{2.7,}

Затем выполните Ваш sudo apt-get -f install который должен теперь смочь работать без ошибки.


Если у Вас есть измотанные вещи так плохо, Вы могли бы оказаться в положении, где необходимо вручную распаковать пакеты Python в систему (они - просто zip с данными заголовка).

Если Вы только что жевали /usr/bin/python2.7 (который должен быть двоичным файлом Python 2), можно заменить это путем загрузки python2.7-минимального пакета и извлечения двоичного файла к правильному месту:

apt-get download python2.7-minimal
ar x python2.7-minimal_*.deb data.tar.xz
sudo tar xJf data.tar.xz -C / './usr/bin/python2.7'
rm data.tar.xz

Это основано на текущих 14,04 пакетах. Если Вы находитесь на другом выпуске, Вам, возможно, придется настроить пути. Или копия с живой системы, выполняющей ту же версию Ubuntu.


Больше вообще говоря, если Вы хотите среду разработки Python, я серьезно предлагаю, чтобы Вы посмотрели на venv модуль. Это как с VirtualEnv Py2 за исключением того, что это встроено. Можно установить то, что Вы любите некорневым, несистемным способом, и это включает отображение python к двоичному файлу Python Вы выбираете (включая Pypy).

На 14,04 существует ошибка в Python 3, для которого нужна фиксация, прежде чем можно будет создать venv, но это, который может работаться - вокруг довольно легко в данный момент. Мы просто должны установить ensurepip:

wget -qO- http://d.pr/f/YqS5+ \
| sudo tar xzf - -C $(python3 -c "import sys; print(sys.path[1])") --no-same-owner

Затем создайте и активируйте venv:

python3 -m venv myvenv
source ./myvenv/bin/activate

Теперь Вы находитесь в своей собственной детской площадке. Необходимо будет назвать активирование в будущем (или назвать myvenv/bin/python двоичный файл явно) загрузить правильный путь Python.

4
ответ дан 27 May 2015 в 16:58

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

Похожие вопросы: