Domanda

Ciao ragazzi, ho un problema di aggiornamento pitone 2,4-2,6:

Ho CentOS 5 (Full)
Ha Python 2.4 vivere in /usr/lib/python2.4/
Moduli aggiuntivi vivono in /usr/lib/python2.4/site-packages /

Ho costruito Python 2.6 da fonti a /usr/local/lib/python2.6/
Ho impostato python di default per python2.6
Ora i vecchi moduli di 2.4 sono fuori PYTHONPATH e sono "persi"
In particolare, yum è rotto ( "nessun modulo denominato yum")

Allora, qual è il modo giusto per migrare / installare i moduli di python2.6?

È stato utile?

Soluzione

Non sono rotti, sono semplicemente non installato. La soluzione a questo è quello di installare loro sotto 2.6. Ma prima dobbiamo vedere se si dovrebbe davvero fare questo ...

Sì, Python una volta installato sostituire il comando python per la versione installata (a meno che non lo si esegue con --alt-installazione). Non è esattamente affermare ciò che il tuo problema, così ho intenzione di indovinare. Il tuo problema è che molti comandi locali utilizzando Python ora non riescono, perché vengono eseguiti con Python 2.6, e non con Python 2.4. E 'corretto?

Se è così, allora è sufficiente eliminare / usr / local / bin / python, e assicurarsi che / usr / bin / python è un link simbolico a /usr/bin/python2.4. Poi si dovrà digitare python2.6 a correre python2,6, ma va bene. Questo è il modo migliore per farlo. Allora avete solo bisogno di installare i pacchetti necessità di 2.6.

Ma se la mia ipotesi è sbagliata, e si ha realmente bisogno di installare tutti quei pacchetti sotto 2.6, quindi non preoccupatevi troppo. Prima di tutto, installare setuptools. Esso comprende uno script easy_install, e si può quindi installare moduli con

easy_install <modulename>

Sarà scaricare il modulo dal pypi.python.org e installarlo. E sarà anche installare alcun modulo che è una dipendenza. easy_install possibile installare qualsiasi modulo che utilizza distutils come installatore, e non molti non lo fanno. Questo renderà l'installazione di 90% di quei moduli un gioco da ragazzi.

Se il modulo ha un C-componente, sarà compilarlo, e quindi è necessario le intestazioni biblioteca troppo, e che sarà più lavoro, e tutto quello che può fare c'è installarli il modo standard CentOS.

Non si deve usare link simbolici tra le versioni, perché le librerie sono in genere per una versione particolare. Per 2.4 e 2.6 penso che i file .pyc siano compatibili (ma non sono sicuro al 100%), in modo che possa funzionare, ma qualsiasi modulo che usa C pausa. E altre versioni di Python avranno i file .pyc incompatibili pure. E sono sicuro che se lo fai, la maggioranza delle persone Python non stanno andando per aiutarvi se lo si fa. ; -)

In generale, provo anche tenere il pitone sistema "pulito", cioè Io non installare nulla che non è installato con gli strumenti di packaging. Invece io uso virtualenv o buildout di lasciare ogni applicazione ha il proprio percorso di pitone dove è dipendenze vivono. Così ogni singolo progetto che ho ha fondamentalmente il proprio insieme di librerie. Diventa più facile in questo modo.

Altri suggerimenti

Ci sono un paio di opzioni ...

  1. Se i moduli verranno eseguiti con Python 2.6, si può semplicemente creare link simbolici a loro dalla directory 2,6 site-packages alla directory 2.4 site-packages.

  2. Se non verrà eseguito sotto 2.6, allora potrebbe essere necessario ri-compilazione contro 2.6, o installare le versioni up-to-date di loro. Basta fare in modo che si sta utilizzando 2.6 al momento della chiamata "python setup.py"

...

Si consiglia di inviare questo su serverfault.com, se si esegue in ulteriori sfide.

Alcune librerie Python possono essere ancora accessibili come con Python 2.6 site-packages viene modificato in dist-packages.

L'unico modo in questo caso è quello di fare spostare tutte le cose generate in site-packages (per esempio mediante make install) per dist-pacchetti e creare uno sym-link.

easy_install è buona, ma ci sono così basso livello per l'installazione del modulo, semplicemente:

  1. sorgente del modulo di decompressione ad alcune directory
  2. tipo "python setup.py install"

Ovviamente si deve fare questo con richiesta versione installata interprete Python; per il controllo è di tipo:

python -V

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top