以Pythonic的方式修改当前目录相对的Python路径
我有一个项目,结构大致是这样的(为了简化内容,省略了一些细节)...
State_Editor/
bin/
state_editor/
__init__.py
main.py
features/
__init__.py
# .py files
io/
__init__.py
# .py files
# etc.
你大概明白了。假设在 features
文件夹里的 foobar.py
文件中这样写了:from state_editor.io.fileop import subInPath
。显然,State_Editor
这个文件夹需要在路径中。
我看过关于 sys.path.append
和路径配置文件的资料,但我不太确定该怎么做才能实现我的需求,或者说最符合 Python 风格的做法是什么。
最大的问题是我不知道怎么指定“上一级目录”。显然,这个是 ..
,但我不太确定怎么避免它被当作字符串字面量来处理。例如,如果我写 sys.path.append('../')
,它会直接把 ../
加到路径里。
所以我的问题是,最“Python 风格”的做法是什么呢?
2 个回答
1
在最近的Python版本中,@fseto推荐的“相对导入”可能是最好的选择(也许在你的模块顶部加一句from __future__ import absolute_import
)。如果你想要一个兼容更多Python版本的解决方案,比如:
import sys
import os
sys.path.append(os.path.abspath(os.pardir))
3
在这个问题中,你需要用两个点开头(这个模块的路径是 state_editor.features.foobar)。所以:
from ..io.fileop import SubInPath
完整文档:
http://docs.python.org/reference/simple_stmts.html#the-import-statement