【问题标题】:importing from parent directory从父目录导入
【发布时间】:2010-07-16 14:03:12
【问题描述】:

我有这种路径架构:

>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/__init__.py 中的__path__,但没有任何改变。

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

提前致谢!

【问题讨论】:

    标签: python


    【解决方案1】:

    根据Modules documentation,模块必须位于要导入的 PYTHONPATH 环境变量中。你可以在你的程序中修改它,比如:

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

    有关更多信息,您可能希望在Installing Python Modules 中查看Modifying Python's Search Path

    【讨论】:

    • 如果您使用相对导入,如果您愿意,也可以使用import os; os.chdir('PATH_TO/config')
    【解决方案2】:

    如果你想修改python的搜索路径而不需要每次都设置PYTHONPATH,可以在python路径上已经存在的目录下添加路径配置文件(.pth文件)。

    本文档详细描述:http://docs.python.org/install/#inst-search-path

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-11-09
        • 2016-12-27
        • 2013-05-22
        • 2012-05-28
        • 2012-07-08
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多