2012-06-25 7 views
10

Nur eine kurze Frage, wie bekomme ich Pypy, um dritte pary Module zu erkennen, die ich in Python habe? Zum Beispiel bekomme ich den folgenden Fehler.Erste Pypy Module von Drittanbietern zu erkennen

from tables import * 
ImportError: No Module named tables 

die im Grunde sagt, dass es nicht meine pytables Bibliothek finden kann, die ich mit in das Skript zu interagieren ich zu laufen versuche.

Antwort

7

Für reine Python-Modulen, fügen Sie einfach das Verzeichnis mit den Modulen auf Ihrem sys.path enthält, wie etwas mit:

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

Diese für CPython, PyPy und Jython arbeitet.

Für C Erweiterungsmodule können Sie PyPy des cpyext versuchen, aber es wird nicht alles laufen hoffen könnte für, weil einige CPython C Erweiterungsmodule in dunklen Ecken CPython der C-basierten Laufzeit wandern: http://morepypy.blogspot.com/2010/04/using-cpython-extension-modules-with.html

Ich schreibe manchmal Code, der ctypes verwendet, um mit einem C.so zu interagieren, und dann das sowohl auf CPython als auch auf Pypy, weil beide ziemlich gut mit ctypes umgehen können - aber ctypes können bei CPython irgendwie langsam sein: http://docs.python.org/library/ctypes.html Jython hatte den Anfang von Typen, aber es war nicht weit genug, um es zu benutzen, zumindest nicht für meine Zwecke.

Es gibt auch eine neue Schnittstelle, die zur Laufzeit einen C-Compiler benötigt. Es wird wahrscheinlich weniger brüchig sein (sprich: anfällig für segfaults) als ctypes. Es ist hier beschrieben: http://morepypy.blogspot.com/2012/06/release-01-of-cffi.html Es kommt aus dem Pypy-Projekt, glaube ich, aber es wurde gemacht, um zuerst auf CPython zu arbeiten. AFAIK, es läuft noch nicht auf Pypy.

5

Pypy hat einen separaten Installationsbereich. Daher sollten alle Module, die Sie von Pypi installieren möchten, in seinem Bereich installiert werden. So, zum Beispiel habe ich pypy installiert in/usr/local/pypy-1, 9-32bit

Ich empfehle die Verwendung von Pip oder easy_install. Hier ist, wie Pip installieren, aber neue Verbindung für distribute_setup.py muss gefunden werden:

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 

Dann nutzen Sie einfach die neu installierte pip das Modul zu bekommen:

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

In diesem Fall ist es mit dem folgenden Fehler fehlgeschlagen,:

[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! 

Installation in diesem Fall nicht möglich, weil Tabellen auf Numpy abhängen, die von PyPy noch nicht unterstützt wird (obwohl sie daran arbeiten, sehen http://pypy.org/numpydonate.html). Für viele Python-Module funktioniert diese Methode jedoch sehr gut. Zum Beispiel habe ich das logilab Constraint-Paket auf diese Weise erfolgreich installiert.

+0

http://python-distribute.org wurde von einer Link-Farm übernommen, und setuptools sollte wahrscheinlich stattdessen verwendet werden. –

3

Kopieren Sie den Ordner für das Modul von C: \ Python27 \ Lib nach C: \ pypy-2.3.1-win32 \ lib-python oder dem entsprechenden Verzeichnis, in dem Sie sie installiert haben.

Offensichtlich funktioniert das nur unter Windows.

+0

Ich habe das fast bemerkt, weil du mit "Ich habe dieses Problem auch ..." begonnen hast. Gib einfach die Antwort. Nicht mehr, nicht weniger. Kein schlechter erster Post! – BradleyDotNET

+0

(Sie editiert, gab Ihren Rat und sogar einige Ermutigung - zu einer ziemlich hilfreiche Antwort, in der Tat. Aber welchen genauen Zweck Sie denken, dass die zusätzliche "Bedrohung" gedient? Dieses Fahnenschwenken ist völlig unnötig und einschüchternd für einen Anfänger Wahrscheinlich weißt du das. Ich bin sicher, selbst ein Neuling zu sein.) –

3

Wie in anderen Antworten erwähnt, hat pypy einen separaten Platz für installierte Module.Ich finde die einfachste Weg, um ein Modul zu PyPy ist folgendes hinzuzufügen:

  • Download der Quelle (zB als *.tar.gz Datei)
  • Extrakt, cd in das entpackte Verzeichnis
  • Lauf pypy setup.py install (manchmal müssen Sie sudo)
+0

Ich habe das gemacht, es hat die lib erfolgreich installiert, aber ich bekomme wieder Fehler für ein Modul, das ich in Python-Code importiert habe – curious

1

Eigentlich gibt es pip_pypy, wenn Sie Pypy installieren. Siehe hier:

screenshot.

Installieren Sie dann das dritte Modul mit pip_pypy.