根据docs ,第一个条目sys.path
是当前脚本的目录。在以下设置中,我想更改此默认设置。想象以下目录结构:
src/
core/
stuff/
tools/
tool1.py
tool2.py
gui/
morestuff/
gui.py
脚本tool*.py
和gui.py
旨在作为脚本运行,如下所示:
python src/core/tools/tool2.py
python src/gui/gui.py
现在所有工具都导入自src.core.stuff
,而 GUI 需要gui.morestuff
。这意味着sys.path[0]
应该指向src/
,但它默认指向src/core/tools/
or src/gui/
。
我可以sys.path[0]
在每个脚本中进行调整(使用如下结构,例如,在开头gui.py
):
if __name__ == '__main__':
if sys.path[0]: sys.path[0] = os.path.dirname(os.path.abspath(sys.path[0]))
然而,这有点多余,对于拥有数千个脚本的成熟代码库来说,它变得乏味。我也知道-m
开关:
python -m gui.gui
但这需要当前目录为src/
.
有没有更好的方法来达到预期的结果,例如通过修改__init__.py
文件?
编辑:这适用于 Python 2.7:
~$ python -V
Python 2.7.3