2017-04-26 6 views
0

Ich möchte Änderungen vornehmen (und möglicherweise beitragen, wenn es gut ist) zu einem öffentlichen Projekt auf GitHub. Ich habe das Modul gegabelt und geklont, aber es ist unklar, wie ich mein Programm zum Importieren der lokalen Bibliothek anstelle des 'offiziellen' installierten Moduls bekommen kann.Import gegabelten Modul in Python anstelle von installiertem Modul

Ich versuchte, es in meinem Projektordner Klonen, aber wenn ich es importiert und versuchte es Dinge zu verwenden bekam seltsam calmap\calmap.plot()

Ich habe auch versucht sys.path.append und den Ordner zu tun. Aber es scheint immer noch den offiziellen anstelle des gegabelten zu importieren.

Ich gehe davon aus, dass ich mein Programm in den Modulordner legen könnte, so dass das Modul zuerst gefunden würde, aber ich kann nicht das ist der "richtige" Weg, es zu tun.

| 
|-->My_Project_Folder/ 
| 
|-->Forked_Module/ 
    |-->docs/ 
    |-->Forked_Module/ 
      |-->__init__.py 
+0

Dies ist ein Fall, in dem die Option _best_ wahrscheinlich ist, um die Verzweigung in einer virtuellen Umgebung wie [virtualenv] auszuführen (https://virtualenv.pypa.io/en/stable/) oder [Anaconda] (https://www.continuum.io/downloads). – mgilson

+0

Diese doppelte Frage von http://stackoverflow.com/questions/23075397/python-how-to-edit-an-installed-package – Rajaram

+0

Warum nicht setzen Sie den Forked_Module-Stamm in My_Project_Folder und importieren das Modul von dort? Vergleichen Sie mit [Python - Modul aus Unterordner importieren] (http://stackoverflow.com/questions/8953844/import-module-from-subfolder) – keocra

Antwort

1

Wenn Sie bereits Anaconda verwenden, können Sie eine neue Umgebung nur für die Entwicklung dieser Funktion erstellen.

zunächst eine neue Umgebung schaffen:

# develop_lib is the name of the environment. 
# You can pick anything that is memorable instead. 
# You can also use whatever python version you require ... 
conda create -n develop_lib python3.5 

Sobald Sie die Umwelt haben, dann möchten Sie wahrscheinlich zu dass Umwelt in der aktuellen Sitzung ein:

source activate develop_lib 

Ok, jetzt, Wenn Sie die Umgebung eingerichtet haben, müssen Sie wahrscheinlich einige Anforderungen für die von Ihnen entwickelte Bibliothek von Drittanbietern installieren. Ich weiß nicht, was diese Abhängigkeiten sind, aber Sie können sie in Ihrer Umgebung unter Verwendung conda install (wenn sie verfügbar sind) oder pip verwenden. Jetzt können Sie mit der Bibliothek arbeiten, die Sie aktualisieren möchten. python setup.py develop sollte verfügbar sein unter der Annahme, dass das Paket einen Standard-Build-Prozess hat. Nachdem Sie das ausgeführt haben, sollten die Dinge gut gehen. Sie können Änderungen vornehmen, Tests usw. durchführen.

+0

Hinzufügen der 'Develop'-Flag schien der Trick zu sein. Zum Glück, wenn ich den Notebook-Kernel öffne, während die Anaconda-Umgebung aktiv ist, scheint es zu erkennen, dass ich diese lokale Version haben möchte. – DChaps

0

Wenn Sie sys.path.append() die neue „Weg“ verwenden wird verwendet, wenn keine der vorherigen das Modul enthält, das Sie importieren. Wenn Sie möchten, dass die „hinzugefügt Pfad“ hat Vorrang vor allen die älteren, haben Sie

sys.path.insert(0, "path") 

Auf diese Weise verwenden, wenn Sie die sys.path drucken, werden Sie sehen, dass der Mehrpfad am Anfang der Liste ist und das Modul, das Sie importieren, wird von dem angegebenen Pfad geladen.

+0

Hat nicht funktioniert, obwohl der Pfad zu 'sys.path' korrekt hinzugefügt wurde. Sollte ich '/ Benutzer /.../ calmap' oder'/Benutzer /.../ calmap/calmap' hinzufügen? Irgendwelche anderen Ideen oder andere Informationen, die für mich nützlich wären, zur Verfügung zu stellen? – DChaps

+0

Für den Beispielbaum haben Sie in Ihrer Frage geschrieben: 'sys.path.insert (0, '/ Users...../Forked_Module')'. Importieren Sie dann mit 'import Forked_Module'. Wenn dies nicht funktioniert, folgen die Zeilen, die Sie tatsächlich verwenden, gefolgt von 'print sys.path'. –