2011-02-08 20 views
16

Ho creato un motore di correzioni rapide (http://www.quickfixengine.org/) per uno dei miei compiti e anche costruito nel supporto python per questo. Sfortunatamente questo è un env multiutente e non ho accesso al percorso di installazione di oython. Quindi il comando make install prova a copiare i file e fallisce. Sono riuscito a commentare le due righe dove cerca di farlo e completare l'installazione. Dal momento che non riesco a mettere i file lì, dove posso mettere il file .so creato. E come faccio a far sapere a Python che è lì? Ho esaminato la documentazione di python.ord ma descrive solo il processo per le installazioni di setup.py. Inoltre ho provato a mettere il percorso per il file .so in sys.path, che non funzionava. Esistono anche documenti sull'anatomia di un pacchetto Python? Grazie.Come installare manualmente una libreria Python

+0

"Inoltre, ho provato a inserire il percorso per .so in sys.path, che non funzionava."Hai provato a importare il modulo di estensione da uno script (o sessione interattiva) nella stessa directory del file' .so' per l'estensione? – gotgenes

risposta

15

Si suppone che la compilazione del pacchetto QuickFix non produca un file setup.py, ma piuttosto compili solo i binding Python e si basi su make install per metterli nella posizione appropriata.

In questo caso, una soluzione rapida e sporco è quello di compilare il sorgente QuickFix, individuare i moduli di estensione Python (hai indicato sul sistema queste estremità con un'estensione .so), e aggiungere quella directory al vostro PYTHONPATH ambientale variabile ad esempio, aggiungi

export PYTHONPATH=~/path/to/python/extensions:PYTHONPATH 

o una riga simile nel file di configurazione della shell.

Una soluzione più robusta includerebbe la compilazione con ./configure --prefix=$HOME/.local. Supponendo che QuickFix sappia mettere i file Python nell'appropriato site-packages, quando lo si fa make install, dovrebbe installare i file su ~/.local/lib/pythonX.Y/site-packages, che, per Python 2.6+, dovrebbe già essere sul percorso Python come per-user site-packages directory.

Se, d'altra parte, lo ha fatto fornire un file setup.py, basta eseguire

python setup.py install --user 

per Python 2.6+.

2

Ecco la FAQ ufficiali su come installare moduli Python: http://docs.python.org/install/index.html

Ci sono alcuni consigli che potrebbero aiutarvi.

+0

sì, ho dato un'occhiata a questo, ma il problema è che descrive come installare qualcosa che è stato confezionato come un modulo python (qualcosa da installare usando setup.py). Non dice come installare una libreria che ha lasciato un .so in giro. :( –

+0

Ecco alcune altre idee http: // dubroy .com/blog/so-you-want-to-install-a-python-package /. Sembra che la soluzione per voi potrebbe essere pip (http://pypi.python.org/pypi/pip). –

3

È necessario installarlo in una directory nella cartella Inizio e in qualche modo manipolare il PYTHONPATH in modo che la directory sia inclusa.

Il modo migliore e più semplice è utilizzare virtualenv. Ma ciò richiede l'installazione, provocando un catch 22. :) Ma controlla se virtualenv è installato. Se è installato si può fare questo:

$ cd /tmp 
$ virtualenv foo 
$ cd foo 
$ ./bin/python 

allora si può solo eseguire l'installazione, come al solito, con/tmp/foo/python setup.py install. (Ovviamente è necessario creare l'ambiente virtuale in una cartella nella home directory, non in/tmp/foo.))

Se non c'è virtualenv, è possibile installare il proprio Python locale. Ma neanche questo potrebbe essere permesso. Poi si può installare il pacchetto in una directory locale per i pacchetti:

$ wget http://pypi.python.org/packages/source/s/six/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d 
$ tar xvf six-1.0b1.tar.gz 
$ cd six-1.0b1/ 
$ pythonX.X setup.py install --install-dir=/tmp/frotz 

Ora è necessario aggiungere al vostro /tmp/frotz/pythonX.X/site-packages PYTHONPATH, e si dovrebbe essere installato e funzionante!