2012-06-25 13 views
10

Solo una domanda veloce, come faccio a ottenere da Pypy il riconoscimento dei terzi moduli di Pary che ho in Python? Ad esempio, ottengo il seguente errore.Ottenere Pypy per riconoscere i moduli di terze parti

from tables import * 
ImportError: No Module named tables 

che è sostanzialmente dicendo che non riesce a trovare la mia libreria pytables che uso per interagire con nello script che sto cercando di eseguire.

risposta

7

Per moduli Python puri, è sufficiente aggiungere la directory contenente i moduli al vostro sys.path, utilizzando qualcosa di simile:

sys.path.insert(0, '/usr/local/lib') 
sys.path.insert(0, os.path.expanduser('~/lib')) 

Questo funziona per CPython, PyPy e Jython.

per moduli di espansione C, si può provare cpyext di PyPy, ma non verrà eseguito tutto ciò che potrebbe sperare, perché alcuni moduli di estensione CPython C vagare in angoli bui della runtime di CPython C-based: http://morepypy.blogspot.com/2010/04/using-cpython-extension-modules-with.html

A volte scrivo codice che usa i ctype per interfacciare con un C .so, e poi lo uso sia su CPython che su Pypy, perché entrambi fanno abbastanza bene con i ctypes - ma i tipi possono essere piuttosto lenti su CPython: http://docs.python.org/library/ctypes.html Ultimo controllo, Jython ha avuto l'inizio dei ctype, ma non era abbastanza lungo da usare, almeno non per i miei scopi.

C'è anche una nuova interfaccia che richiede un compilatore C in fase di esecuzione. Sarà probabilmente meno fragile (leggi: incline ai segfault) rispetto ai ctype. È descritto qui: http://morepypy.blogspot.com/2012/06/release-01-of-cffi.html Viene dal progetto Pypy, credo, ma è stato fatto funzionare prima su CPython. AFAIK, non funziona ancora su Pypy.

5

Pypy dispone di uno spazio di installazione separato. Pertanto, tutti i moduli che si desidera installare da Pypi devono essere installati nel suo spazio. Quindi, ad esempio, ho installato pypy in /usr/local/pypy-1.9-32bit

Mi raccomando di usare pip o easy_install. Ecco come installare pip, ma nuovo link per distribute_setup.py deve essere trovata:

curl DEAD_LINK /distribute_setup.py | /usr/local/pypy-1.9-32bit/bin/pypy 
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | /usr/local/pypy-1.9-32bit/bin/pypy 

Poi, basta usare il pip appena installato per ottenere il modulo:

sudo /usr/local/pypy-1.9-32bit/bin/pip install tables 

In questo caso, fallito, con il seguente errore:

[email protected]:/tmp$ sudo /usr/local/pypy-1.9-32bit/bin/pip install tables 
Downloading/unpacking tables 
    Downloading tables-2.4.0.tar.gz (8.9Mb): 8.9Mb downloaded 
    Running setup.py egg_info for package tables 
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables! 
    Complete output from command python setup.py egg_info: 
    .. ERROR:: You need numpy 1.4.1 or greater to run PyTables! 

installazione non riuscita in questo caso, poiché tabelle dipende Numpy, che non è ancora supportato da PyPy (anche se stanno lavorando, vedi http://pypy.org/numpydonate.html). Tuttavia, per molti moduli Python, questo metodo funziona alla grande. Ad esempio, ho installato il pacchetto dei vincoli di Logilab in questo modo.

+0

http://python-distribute.org è stato rilevato da una farm di collegamenti e probabilmente setuptools dovrebbe essere utilizzato in ogni caso. –

3

Copia cartella per il modulo da C: \ Python27 \ Lib a C: \ pypy-2.3.1-win32 \ lib-python o l'equivalente di dove sono stati installati.

Ovviamente, questo funzionerà solo su Windows.

+0

L'ho quasi segnalato perché hai iniziato con "Ho anche questo problema ..." Basta dare la risposta. Niente di più, niente di meno. Comunque non è un brutto primo post! – BradleyDotNET

+0

(L'hai modificato, hai dato il tuo consiglio e anche qualche incoraggiamento - a una risposta abbastanza utile, in effetti. Ma quale scopo esatto pensi che sia stata aggiunta la "minaccia"? Questo sventolare è assolutamente inutile e intimidatorio per un principiante. Probabilmente lo so. Sicuramente sono un principiante anch'io.) –

3

Come indicato in altre risposte, pypy dispone di uno spazio separato per i moduli installati.Trovo il modo più semplice per aggiungere un modulo per PyPy è la seguente:

  • scaricare il sorgente (ad esempio come *.tar.gz file)
  • estratto, cd nella directory estratta
  • run pypy setup.py install (a volte è necessario anteporre un sudo)
+0

ho fatto questo, ha installato la lib con successo ma sto ricevendo errori di nuovo per un modulo che ho importato in codice python – curious

1

In realtà, non v'è pip_pypy quando si installa PyPy. Vedi qui:

screenshot.

Quindi installare il terzo modulo con pip_pypy.

Problemi correlati