2017-10-16 17 views
0

Ich habe Schwierigkeiten, mein Projekt erfolgreich in die Testsuite in meinem Projekt zu importieren, sowie das Programm über die Befehlszeile ausführen zu können. Ich habe meine Test-Suite für einige Zeit laufen lassen, mit dem Eindruck, dass, wenn die Tests funktionieren, auch das Kommandozeilen-Programm - das ist offensichtlich nicht der Fall. Ich habe keine noch beabsichtigen auf mein Programm als eine Bibliothek zu verwenden. Die api.py Acts ist der Einstiegspunkt für das Programm.Python-Import-System-Mechanik für Split-Test und App-Verzeichnisse

Ich habe ein Projekt mit der folgenden Struktur (die gleiche Verzeichnishierarchie wie requests):

myapp/ 
    myapp/ 
     __init__.py 
     api.py # depends on commands.py 
     commands.py # depends on utils.py 
     utils.py 
    tests/ 
     context.py 
     test_api.py # depends on api.py 
     test_commands.py # depends on commands.py, utils.py 

In der Datei context.py I einen Pfad Modifikation haben Zugabe myapp zum PYTHONPATH, so kann ich erfolgreich die Tests ausführen auf meinem Code. Hier ist der Inhalt dieser Datei

import os 
import sys 

sys.path.insert(0, os.path.abspath('..')) 
import myapp 

Ich habe versucht, vorstellbare Import Kombination kann ich mir vorstellen. Viel zu viele zum Auflisten! Ich habe auch die Python-Referenz import system page und diese tutorial durchgelesen.

Wie soll ich meine Abhängigkeiten importieren?

Antwort

0

Es stellte sich heraus, das war das richtige Layout, ich verwechselte den Fehler für etwas anderes. Für zukünftige Referenz müssen relative Importe in Python 3 explizit sein: Wenn Sie im Paketverzeichnis myapp nicht import commands sagen können, müssen Sie stattdessen importieren Sie es als from . import commands. Dies wurde definiert in PEP 328 siehe auch this SO Beitrag zum Thema. Führen Sie Ihr Paket mit python -m mutil.api nicht python ./mutil/api.py als letztere den Interpreter Kontext des aktuellen Pfads nicht geben.

Verwandte Themen