2010-07-16 5 views
2

J'ai ce genre d'architecture de chemin:importation du répertoire parent

>main_path/ 
    __init__.py 
    config/ 
     __init__.py 
     common.py 
    app_1/ 
     __init__.py 
     config.py 
     index.py 
> 

Je voudrais être en mesure de le faire dans config.py:

>from main_path.config import common 
> 

Bien qu'il ne fonctionne pas. Python me dit:

> $> pwd 
..../main_path/app_1 
$> python index.py 
[...] 
ImportError: No module named main_path.config 
> 

Pour autant que je comprends, cela serait possible si je chargé tout à partir du main_path, bien que le but est d'avoir plusieurs applications avec un fichier de configuration commun.
J'ai essayé d'ajouter le répertoire parent au __path__ dans l'app_1/__init__ .py mais cela n'a rien changé. Mon prochain mouvement serait d'avoir un lien symbolique, bien que je n'aime pas vraiment cette "solution", donc si vous avez une idée pour m'aider, ce serait très apprécié!

Merci d'avance!

Répondre

1

Selon le Modules documentation un module doit être dans votre variable d'environnement PYTHONPATH à importer. Vous pouvez modifier cela dans votre programme avec quelque chose comme:

import sys 
sys.path.append('PATH_TO/config') 
import common 

Pour plus d'informations, vous pouvez voir dans Modifying Python's Search PathInstalling Python Modules.

+0

Cela a fait l'affaire, merci! – chouquette

+0

Si vous utilisez des importations relatives, vous pouvez également faire 'import OS; os.chdir ('PATH_TO/config') 'si vous en avez envie. – JAB

0

Vous pouvez modifier votre variable d'environnement PYTHONPATH ou modifier sys.path.

1

Si vous souhaitez modifier le chemin de recherche de Python sans avoir à configurer PYTHONPATH à chaque fois, vous pouvez ajouter un fichier de configuration de chemin (fichier .pth) à un répertoire déjà sur le chemin python.

Ce document décrit en détail: http://docs.python.org/install/#inst-search-path

La façon la plus pratique est d'ajouter un fichier de configuration de chemin vers un répertoire qui est déjà sur le chemin de Python, généralement à .../site- packages/ répertoire. Les fichiers de configuration de chemin ont une extension de .pth, et chaque ligne doit contenir un seul chemin qui sera ajouté à sys.path .

Questions connexes