2016-05-03 8 views
0

Ich habe die folgende Verzeichnisstruktur:Wie das Python-Paket in einem Projekt verwenden

├── DynamicProgramming 
│   ├── 0-1_kp_problem.py 
│   ├── b.py 
│   ├── largest_contigous_subarray.py 
│   ├── longest_common_substring.py 
│   ├── min_change_for_given_money.py 
│   ├── optimal_matrix_chain.py 
│   ├── Readme.md 
│   └── wis.py 
├── helper 
│   ├── a.py 
│   └── __init__.py 
└── Readme.md 

Das helper Verzeichnis die Bibliotheksfunktionen enthält, die alle über den Code verwendet werden. Wie kann ich das Hilfspaket aus den Skripten innerhalb von DynamicProgramming importieren, ohne es dem Pfad hinzuzufügen?

Bearbeiten =>

ich nicht helper Verzeichnis innerhalb dynamicProgramming bewegen kann, weil es mehr als ein Verzeichnis sein kann, es zu benutzen.

Antwort

3

könnten Sie so etwas wie verwenden:

from ..helper import a 

See python docs on packages.

+0

Ja, aber ich kann das nur tun, wenn die Datei ich bin mit in ein Paket selbst – freeza

+1

Es klingt wie 'helper' Verzeichnis enthält einige allgemeine Funktionalität, die neben "DynamicProgramming" auch von anderen Orten verwendet wird. In diesem Fall sollten Sie vielleicht darüber nachdenken, 'Helfer' Verzeichnis zu 'PYTHONPATH' hinzuzufügen. Wenn Sie virtuelle Umgebungen verwenden, können Sie das 'helper'-Verzeichnis zu' PYTHONPATH' hinzufügen/entfernen, wenn die virtuelle Umgebung aktiviert/deaktiviert ist. Dann könnten Sie einfach einen absoluten Pfad in Ihrem Import verwenden. –

2

Wenn Sie Ihren Code aus dem Projektstammordner ausführen, sind Sie wahrscheinlich erfolgreich mit import helper oder import helper.a. Wenn nicht, würden Sie aktuelle Verzeichnis zu PYTHONPATH hinzufügen:

$ export PYTHONPATH="." 

bessere Nutzung Projekt setup.py

Statt mit PYTHONPATH zu spielen (was manchmal heikle Angelegenheit sein kann), können Sie Ihr Projekt als Python-Paket erstellen soll .

Sie fügen setup.py in Ihrem Projektstammverzeichnis hinzu, geben Sie Attribute dieses Pakets an und erstellen Sie es daraus.

setup.py können mehrere Pakete gleichzeitig definieren, aber im Allgemeinen ist es häufiger mit nur einem. Zu diesem Zweck wäre es besser das helper Paket in DynamicProgramming Struktur zu verschieben und von dort zu importieren.

Suche nach setup.py Python Verpackung Tutorials, erfordert einige Studie, aber es wird sich auszahlen.

Verwandte Themen