2011-01-23 6 views
12

Sono molto nuovo in CentOS e sto cercando di installare il pacchetto M2Crypto Python su di esso.Impossibile installare un pacchetto Python

mi sono imbattuto:

sudo python setup.py install 

e sembrava andare bene: (questa è la fine della produzione)

removing 'build/bdist.linux-i686/egg' (and everything under it) 
Processing M2Crypto-0.20.2-py2.4-linux-i686.egg 
Removing /usr/lib/python2.4/site-packages/M2Crypto-0.20.2-py2.4-linux-i686.egg 
Copying M2Crypto-0.20.2-py2.4-linux-i686.egg to /usr/lib/python2.4/site-packages 
M2Crypto 0.20.2 is already the active version in easy-install.pth 

Installed /usr/lib/python2.4/site-packages/M2Crypto-0.20.2-py2.4-linux-i686.egg 
Processing dependencies for M2Crypto==0.20.2 

Tuttavia non riesco a importare M2Crypto:

$ python 
Python 2.4.3 (#1, Nov 11 2010, 13:34:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import M2Crypto 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
File "M2Crypto/__init__.py", line 22, in ? 
import __m2crypto 
ImportError: No module named __m2crypto 
>>> 

Cosa sto sbagliando?

+0

Non sembra che tu stia facendo qualcosa di sbagliato. Ho installato il pacchetto con apt su Ubuntu e non ho problemi con Python 2.6. (Perché stai usando la v2.4 di Python?) Il modulo viene caricato da /usr/lib/pymodules/python2.6/M2Crypto dove c'è un file __m2crypto.so. Ho trovato un'altra copia di M2Crypto in/usr/share/pyshared/M2Crypto, e non ci sono file .so lì. – Apalala

+0

Grazie per il feedback Apalala. Io eseguo Python 2.4 perché questo è il default con CentOS e molti degli strumenti CentOS si aspettano Python 2.4 da quello che ho letto.I documenti di M2Crypto dicono che funziona con 2.4. – VacuumTube

+0

È sempre possibile installare una versione più recente di python (di default in/usr/local/bin /) e fare in modo che gli script facciano riferimento a Python su quel percorso. In questo modo è possibile avere directory di moduli separate per il proprio python di sistema rispetto al python di sviluppo/distribuzione. Quando configuri il tuo python source, imposta semplicemente --prefix =/usr/local/(che fa per impostazione predefinita, ma .. puoi farlo come vuoi ..) – synthesizerpatel

risposta

1

Ciò accade occasionalmente durante l'installazione dei moduli python. Ci sono un paio di cose che faccio per risolvere questo problema:

  1. A volte è perché non hai mai impostato il tuo PYTHONPATH. Prova:

    setenv PYTHONPATH /usr/lib/python2.4/site-packages:$PYTHONPATH

  2. volte è a causa di librerie condivise si trovano in/usr/lib e che avrebbe dovuto eseguire:

setenv LD_LIBRARY_PATH /usr/lib: $ LD_LIBRARY_PATH

Fammi sapere come va questo per te. Il più delle volte è solo perché non hai impostato correttamente il percorso Python.

6

mi sono imbattuto:

python setup.py tests 

e quello fissato esso. Ha copiato alcuni file, che a mio avviso hanno portato la lib nel posto giusto.

running test 
running egg_info 
writing M2Crypto.egg-info/PKG-INFO 
writing top-level names to M2Crypto.egg-info/top_level.txt 
writing dependency_links to M2Crypto.egg-info/dependency_links.txt 
reading manifest file 'M2Crypto.egg-info/SOURCES.txt' 
writing manifest file 'M2Crypto.egg-info/SOURCES.txt' 
running build_ext 
copying build/lib.linux-i686-2.4/M2Crypto/__m2crypto.so -> M2Crypto 
test_BitSTring (tests.test_asn1.ASN1TestCase) ... ok 
. 
. 
. 
+1

+1! Come hai detto, l'esecuzione di "setup.py test" ha risolto anche il problema di installazione su CentOS! Grazie! – rmbianchi

4

tests non è un bersaglio valido, eseguire test invece; questo ha risolto il problema per me.

2

Mi sono imbattuto nello stesso numero, in centos 6.2.

In esecuzione anche il test è stato risolto per me. Tuttavia, quando ho cercato nei pacchetti del sito, non è stato cambiato nulla. L'esecuzione di setup.py test crea m2crpyto nella directory locale.

Questa è la chiave del problema, per risolvere il problema senza eseguire setup.py test, lasciare la cartella M2Crypto. Raccoglie m2crypto dalla cartella locale e non trova l'uovo.