2009-07-04 9 views
3

Hey Leute, ich habe ein Problem der Modernisierung Python 2,4-2,6:Übergang von Python2.4 zu Python2.6 auf CentOS. Modul Migrationsproblem

Ich habe CentOS 5 (Full)
Es hat Python 2.4 in /usr/lib/python2.4/ lebenden
zusätzliche Module leben in /usr/lib/python2.4/site-packages/

ich habe gebaut python 2.6 aus Quellen in /usr/local/lib/python2.6/
ich habe Standard-python gesetzt zu python2.6
Jetzt alte Module für 2.4 sind aus Pythonpath und sind "verloren"
In Teil icular, yum ist defekt ("kein Modul mit dem Namen yum")

Also, was ist der richtige Weg, um Module zu python2.6 zu migrieren/zu installieren?

Antwort

3

Sie sind nicht kaputt, sie sind einfach nicht installiert. Die Lösung dazu ist, sie unter 2.6 zu installieren. Aber zuerst sollten wir sehen, ob Sie das wirklich tun sollten ...

Ja, Python wird bei der Installation den Python-Befehl durch die installierte Version ersetzen (es sei denn, Sie führen ihn mit --alt-install aus). Sie sagen nicht genau, was Ihr Problem ist, also werde ich raten. Ihr Problem ist, dass viele lokale Befehle, die Python verwenden, jetzt fehlschlagen, weil sie mit Python 2.6 und nicht mit Python 2.4 ausgeführt werden. Ist das korrekt?

Wenn das so ist, dann lösche einfach/usr/local/bin/python und stelle sicher, dass/usr/bin/python ein symbolischer Link zu /usr/bin/python2.4 ist. Dann müssten Sie python2.6 eingeben, um python2,6 auszuführen, aber das ist OK. Das ist der beste Weg, es zu tun. Dann müssen Sie nur die Pakete Sie brauchen in 2.6 installieren.

Aber wenn meine Vermutung falsch ist, und Sie wirklich alle diese Pakete unter 2.6 installieren müssen, dann machen Sie sich keine Sorgen. Installieren Sie zunächst setuptools. Es enthält eine easy_install Skript, und Sie können dann Module installieren mit

easy_install <modulename> 

Es wird das Modul von pypi.python.org herunterladen und installieren. Und es wird auch jedes Modul installieren, das eine Abhängigkeit ist. easy_install kann jedes Modul installieren, das distutils als Installer verwendet, und nicht viele nicht. Dies macht die Installation von 90% dieser Module zum Kinderspiel.

Wenn das Modul eine C-Komponente hat, wird es kompiliert, und dann brauchen Sie die Bibliothek Header, und das wird mehr Arbeit, und alles, was Sie dort tun können, ist sie die CentOS-Standard-Weg zu installieren.

Sie sollten keine symbolischen Verknüpfungen zwischen Versionen verwenden, da Bibliotheken normalerweise für eine bestimmte Version gelten. Für 2.4 und 2.6 denke ich, dass die .pyc-Dateien kompatibel sind (aber ich bin nicht 100% sicher), so dass das funktionieren kann, aber jedes Modul, das C verwendet, wird brechen. Und andere Versionen von Python haben auch inkompatible .pyc-Dateien. Und ich bin sicher, wenn du das tust, werden die meisten Python-Leute dir nicht helfen, wenn du es tust. ;-)

Im Allgemeinen versuche ich auch, das System Python "sauber" zu halten, d.e. Ich installiere dort nichts, das nicht mit den Verpackungstools installiert ist. Stattdessen nutze ich virtualenv oder buildout, um jeder Anwendung ihren eigenen Python-Pfad zu geben, in dem ihre Abhängigkeiten leben. Also jedes einzelne Projekt, das ich im Grunde habe, hat seine eigenen Bibliotheken. Es wird einfacher so.

+1

Danke! Nachdem der Standard-Python auf 2.4 zurückgesetzt wurde, ist yum wieder aktiv. –

0

Es gibt ein paar Optionen ...

  1. Wenn die Module unter Python laufen 2.6, können Sie einfach symbolische Links, um sie von dem 2.6-Website-Paketen Verzeichnis auf die 2.4-Website-Pakete erstellen Verzeichnis.

  2. Wenn sie nicht unter 2.6 ausgeführt werden, müssen Sie sie möglicherweise mit 2.6 neu kompilieren oder aktuelle Versionen von ihnen installieren. So stellen Sie sicher, dass Sie 2.6 verwenden, wenn "python setup.py"

Aufruf ...

Sie diese vielleicht auf serverfault.com schreiben, wenn Sie zusätzliche Herausforderungen führen.

+0

Danke gahooa! Gegenwärtig gibt es etwa 100 Module in 2.4/Site-Paketen. Ich bin nicht sehr glücklich, 100 symbolische Verbindungen zu schaffen ... Und um setup.py laufen zu lassen, muss ich alle Quellen finden und alle Abhängigkeiten für korrekte Reihenfolge der Installation erraten. Ich denke, es sollte einige "aus dem Buch" -Lösung sein. –

0

Einige Python-Bibliotheken sind möglicherweise immer noch nicht zugänglich wie mit Python 2.6 site-packages wird in dist-packages geändert.

Die einzige Möglichkeit in diesem Fall ist, alle Sachen, die in Site-Paketen erzeugt werden (z. B. durch make install) zu dist-packages zu bewegen und eine sym-link zu erstellen.

0

easy_install ist gut, aber es gibt geringe Möglichkeit, Modul für die Installation, nur:

  1. auspacken Modul Quelle in ein Verzeichnis
  2. Typ
  3. "Python setup.py install"

Of Natürlich sollten Sie dies mit der erforderlichen installierten Python-Interpreter-Version machen; zum überprüfen es typ:

python -V