2016-07-11 4 views
1

Ich habe folgende Python-Projekt Setup:Python Projektstruktur, Imports

/project 
    /doc 
    /config 
     some_config.json 
    /src 
     /folderA 
      __init__.py 
      Databaseconnection.py 
      ... 
     /folderB 
      __init__.py 
      Calculator.py 
      ... 
     /main 
      __init__.py 
      Main.py 
      ... 
     /test 
      __init__.py 
      AnImportantTest.py 
     __init__.py 
    .gitignore 
    README.md 
    requirements.txt 

Main.py ist die "ausführbare Datei" (oder besser gesagt Modul), das alle anderen Module aufruft. Alle __init__.py Dateien sind leer. Wie sollen die Import-Anweisungen in Main.py aussehen? Ich sah auch this, was jedoch nicht sehr hilfreich war:

# Main.py 

import sys 
sys.path.insert(0,'../..') 

from folderA.Databaseconnection import *  # not working 
from src.folderA.Databaseconnection import * # not working 

Danke.

+2

Ich würde bewegen 'Main.py' (sollte klein geschrieben werden) bis zu'/src', die die Importe vereinfachen, und setzen Sie die '/ tests' in einem separaten Verzeichnis unter'/Projekt ". So wie es aussieht, brauchen Sie '..', um ein Verzeichnis in Ihren' Imports' hoch zu gehen, anstatt den Pfad zu hacken. – jonrsharpe

Antwort

0

Mit sys.path.insert() gibt Python ein anderes Verzeichnis für Module zu importieren. Das Verzeichnis ../../ fügt den Ordner /project hinzu, aber dort sind die Module nicht vorhanden. Verwenden Sie stattdessen:

# Main.py 

import sys 
sys.path.insert(0,'../') # /src 

from folderA.Databaseconnection import *