从父目录导入

时间:2010-07-16 14:03:13

标签: python

我有这种路径架构:

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

我希望能够在config.py中执行此操作:

>from main_path.config import common
> 

虽然它不起作用。 Python告诉我:

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

据我了解,如果我从main_path加载所有内容,这将是可能的,但目的是让多个应用程序具有公共配置文件。
我尝试将父目录添加到app_1 / __path__中的__init__。py但它没有改变任何内容。

我的下一步行动是建立一个符号链接,虽然我不太喜欢这个“解决方案”,所以如果你有任何想法可以帮助我,我将不胜感激!

提前致谢!

3 个答案:

答案 0 :(得分:1)

根据Modules documentation,模块必须在您要导入的PYTHONPATH环境变量中。您可以在程序中使用以下内容对其进行修改:

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

有关详细信息,您可能希望在Modifying Python's Search Path中看到Installing Python Modules

答案 1 :(得分:1)

如果要修改python的搜索路径而不必每次都设置PYTHONPATH,可以将路径配置文件(.pth文件)添加到python路径上已有的目录中。

本文档详细介绍了它:http://docs.python.org/install/#inst-search-path

  

最方便的方法是添加一个   路径配置文件到目录   那已经在Python的路径上,   通常到... / site-packages /   目录。路径配置文件   扩展名为.pth,每个   line必须包含单个路径   将附加到sys.path。

答案 2 :(得分:0)

您可以调整PYTHONPATH环境变量或编辑sys.path。