Ubuntu: Scipy-Stack für Python 2.7 aktualisieren

1

Ich bin sehr frisch unter Linux, daher könnte es im Folgenden einige offensichtliche Fehltritte geben.

Ich habe gestern die letzte Ubuntu LTS-Version und auch pyCharm (Python-Editor) frisch installiert. Ich fuhr fort, den Scipy-Stack zu aktualisieren, indem ich dem Befehl auf der Website folgte:

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Jetzt in pyCharm stelle ich jedoch fest, dass scipy nicht aktualisiert wird. Es stellt sich heraus, dass mehrere Python-Installationen verfügbar sind:

$ sudo ls /usr/bin/python*
/usr/bin/python        /usr/bin/python2-config  /usr/bin/python3m
/usr/bin/python2       /usr/bin/python3     /usr/bin/python-config
/usr/bin/python2.7     /usr/bin/python3.4       /usr/bin/pythontex
/usr/bin/python2.7-config  /usr/bin/python3.4m      /usr/bin/pythontex3

$ which python
/usr/bin/python

Ich möchte python2.7 als meine Haupt- / Standard-Pythonreferenz verwenden und auch deren Pakete aktualisieren. Wie mache ich das?

FooBar
quelle
python2.7ist die Standardeinstellung python. Alle Pakete, die Sie installiert haben, sind für Python 2.7 (Python 3.X-Pakete heißen python3-....
muru
@muru my pCharm verwendet das 2.7-Python und zeigt scipydie Version 0.13.3 an.
FooBar
Welches ist die Version von scipy in den Repos: packages.ubuntu.com/trusty/python-scipy .
muru

Antworten:

2

Standardmäßig gibt es nur zwei Python-Installationen. 2.7 und 3.4 hier. Alle python-*Pakete sind für Python 2.7 erstellt. Alle python3-*Pakete sind für Python 3.4 erstellt.

Was Sie bei der Version von bemerken, scipyhat nichts mit dem allgemeinen Layout dieser Python-Installationen zu tun. Es geht darum, wie Ubuntu funktioniert . Ubuntu aktualisiert nicht jedes Paket für jedes Update, das die Entwickler veröffentlichen. Es werden nur Pakete aktualisiert, wenn es Sicherheitsupdates gibt oder Dinge, die es drastisch verbessern. Dies bietet Entwicklern Stabilität, die keine API / ABI-Änderungen auf von ihnen bereitgestellten Systemen wünschen.

Ich vermute, Sie möchten Ubuntus Python-System überhaupt nicht verwenden, sondern lieber a virtualenv. Diese verwenden die python(oder python3) Binärdatei des Systems, aber Sie können den Rest der Umgebung ( site-packagesusw.) besitzen. Dies gibt Ihnen nahezu vollständige Flexibilität bei der Installation beliebiger Versionen von beliebigen pipDateien, ohne dass Sie Root benötigen und ohne über vom System verwaltete Dateien zu trampeln.

Normalerweise ist dies der Fall, wenn Sie ein erstellen virtualenv, "aktivieren" und dann Ihre Pakete installieren:

virtualenv /path/to/venv  # or python3 -mvenv /path/to/venv
source /path/to/venv/bin/activate
pip install -U pip  # update pip
pip install -U numpy scipy matplotlib ipython ipython-notebook pandas sympy nose

Beachten Sie, dass die Namen dieser Pakete oben möglicherweise nicht korrekt sind pip.

Beachten Sie auch, dass Sie wahrscheinlich auf einige Fehler in Bezug auf fehlende Build-Abhängigkeiten stoßen werden. Von Ubuntu heruntergeladene Pakete, die kompiliert werden müssen (die meisten dieser Berechnungspakete), wurden vorkompiliert. Sie müssen ihre Abhängigkeiten erfüllen. Ein schmutziger Weg, dies zu tun, ist apt-get build-depfür die Ubuntu-Versionen zu verwenden. Wenn die Abhängigkeiten zwischen der Ubuntu- und der PyPi-Version abweichen, müssen Sie möglicherweise andere Dinge installieren. In den Dokumenten zu diesem Projekt erfahren Sie, was Sie benötigen.

sudo apt-get build-dep python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Es ist mühsam, Build-Deps für Python 2 und 3 zu installieren, aber es ist nur Festplattenspeicher, oder? :) Sie können die Abhängigkeiten manuell erfüllen, wenn Sie möchten.

Oli
quelle
Vielen Dank für die ausführliche Antwort, mit der das zugrunde liegende Problem aufgezeigt wurde. Ich hatte Probleme beim Kompilieren meiner eigenen Pakete, also habe ich Anaconda verwendet, die all diesen Aufwand übernahm.
FooBar