Python: Verwenden von heruntergeladenen Modulen

8

Ich bin neu bei Python und habe meistens meinen eigenen Code benutzt. Aber jetzt habe ich ein Paket heruntergeladen, das ich für ein Problem brauche, das ich habe.

Beispielstruktur:

%Vor%

Die __init__.py der Kuhfabrik hat nun from cowfactory import cow . Dies führt zu einem Importfehler.

Ich könnte es reparieren und die Import-Anweisung in from externals.cowfactory import cow ändern, aber etwas sagt mir, dass es einen einfacheren Weg gibt, da es nicht sehr praktisch ist.

Eine andere Lösung könnte sein, das cowfactory-Paket in die Wurzel meines Projekts zu stellen, aber das ist auch nicht sehr sauber.

Ich denke, ich muss etwas mit der Datei __init__.py im Verzeichnis externals machen, aber ich bin mir nicht sicher, was.

    
Pickels 04.09.2010, 07:36
quelle

3 Antworten

6

Innerhalb des cowfactory-Pakets sollten relative Importe wie from . import cow verwendet werden. Die Datei __init__.py in externen Dateien ist nicht erforderlich. Angenommen, Ihr Projekt befindet sich in root \ und cowfactory ist das externe Paket, das Sie heruntergeladen haben, können Sie es auf zwei verschiedene Arten tun:

  1. Installieren Sie das externe Modul

    Externe Python-Pakete enthalten normalerweise eine Datei "setup.py", mit der Sie sie installieren können. Unter Windows wäre das der Befehl "setup.py bdist_wininst" und Sie erhalten ein EXE-Installationsprogramm im Verzeichnis "dist" (wenn es korrekt erstellt wird). Verwenden Sie dieses Installationsprogramm und das Paket wird im Python-Installationsverzeichnis installiert. Danach kannst du einfach import cowfactory genauso machen wie import os .

    Wenn Sie pip oder easy_install installiert haben: Viele externe Pakete können mit ihnen installiert werden (pip ermöglicht sogar eine einfache Deinstallation).

  2. Verwenden Sie PYTHONPATH für die Entwicklung

    Wenn Sie alle Abhängigkeiten in Ihrem Projektverzeichnis zusammenhalten möchten, behalten Sie alle externen Pakete im Ordner externals \ und fügen Sie den Ordner dem PYTHONPATH hinzu. Wenn Sie die Befehlszeile verwenden, können Sie eine Stapeldatei erstellen, die etwas wie

    enthält %Vor%

    Ich mache eigentlich etwas ähnliches, aber mit PyDev + Eclipse. Dort können Sie die "Run configurations" so ändern, dass sie die Umgebungsvariable PYTHONPATH mit dem Wert "externals" enthalten. Nachdem die Umgebungsvariable gesetzt wurde, kannst du einfach import cowfactory in deinen eigenen Modulen setzen. Beachten Sie, dass dies besser als from external import cowfactory ist, da es im letzteren Fall nicht mehr funktioniert, sobald Sie Ihr Projekt installiert haben (oder Sie müssten alle externen Abhängigkeiten als ein Paket namens "external" installieren, was eine schlechte Idee ist) .

Die gleichen Lösungen gelten natürlich auch für Linux, aber mit verschiedenen Befehlen.

    
AndiDog 04.09.2010, 08:00
quelle
1

Im Allgemeinen würden Sie easy_install our pip verwenden, um es für Sie im entsprechenden Verzeichnis zu installieren. Es gibt ein site-packages -Verzeichnis in Windows, in das Sie das Paket einfügen können, wenn Sie easy_install aus irgendeinem Grund nicht verwenden können. Auf Ubuntu ist es /usr/lib/pythonX.Y/dist-packages . Google für Ihr spezielles System. Oder Sie können es irgendwo auf Ihre PYTHONPATH Umgebungsvariable setzen.

Als allgemeine Regel ist es gut, nicht in die Struktur Ihres Programmverzeichnisses Bibliotheken von Drittanbietern einzutragen (obwohl es dazu unterschiedliche Meinungen gibt). Dies hält Ihre Verzeichnisstruktur so minimalistisch wie möglich.

    
aaronasterling 04.09.2010 07:52
quelle
0

Am einfachsten ist es, die Umgebungsvariable $ PYTHONPATH zu verwenden. Sie legen es fest, bevor Sie Ihre Skripts wie folgt ausführen:

%Vor%

Sie können so viele Ordner hinzufügen, wie Sie möchten (vorausgesetzt, sie sind durch getrennt: ), und Python sucht beim Importieren nach allen diesen Ordnern.

    
kirbuchi 04.09.2010 07:59
quelle

Tags und Links