从父目录导入
我有这样的路径结构:
>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
>
据我理解,如果我从主路径加载所有内容,这样是可以的,但我的目标是让多个应用共享一个配置文件。
我尝试在 app_1/__init__
.py 中把父目录添加到 __path__
,但没有任何变化。
我接下来的想法是使用符号链接,不过我并不太喜欢这个“解决方案”,所以如果你有其他的建议,我会非常感激!
提前谢谢你!
3 个回答
0
你可以调整一下你的 PYTHONPATH 环境变量,或者修改 sys.path。
1
如果你想在不每次都设置PYTHONPATH的情况下修改Python的搜索路径,可以在一个已经在Python路径上的目录里添加一个路径配置文件(.pth文件)。
这份文档详细说明了这个过程:http://docs.python.org/install/#inst-search-path
最简单的方法是把路径配置文件放到一个已经在Python路径中的目录里,通常是.../site-packages/目录。路径配置文件的扩展名是.pth,每一行必须包含一个单独的路径,这些路径会被添加到sys.path中。
1
根据模块文档,要想导入一个模块,它必须在你的PYTHONPATH环境变量中。你可以在程序中通过一些代码来修改这个变量,比如:
import sys
sys.path.append('PATH_TO/config')
import common
想了解更多信息,你可以查看修改Python的搜索路径,这个内容在安装Python模块的文档里。