2010-09-27 101 views
0

Python的方式我有一个结构类似这样(减少了很多给要点)项目......路径相对蟒蛇修改到当前目录

State_Editor/ 
    bin/ 
    state_editor/ 
     __init__.py 
     main.py 
     features/ 
      __init__.py 
      # .py files 
     io/ 
      __init__.py 
      # .py files 
     # etc. 

你的想法。现在说例如foobar.pyfeatures这样做了...... from state_editor.io.fileop import subInPath。显然State_Editor需要在路径中。

我读过关于sys.path.append和路径配置文件,但我不知道如何完成我需要完成的任务,或者最Python的方法。

最大的问题是我不知道如何指定“一个目录”。显然这是..,但我不知道如何避免这被解释为字符串文字。例如,如果我做sys.path.append('../')它将字面上追加../到路径。

所以我的问题是,什么是最“pythonic”的方式来完成这个?

+0

main.py在做什么? (鉴于没有更多的信息,我会把main.py放在State_Editor的根目录下,然后就会按照你的显示工作) – Mark 2010-09-27 00:27:01

+0

我想state_editor本来是要保存脚本的(我在之前的Python教程中阅读了一个打包指南) 。 – person 2010-09-27 00:32:12

+0

虽然这肯定会起作用,而现在我正在环顾四周,看起来很常见。谢谢。 – person 2010-09-27 00:46:49

回答

1

近年来,足够的Python版本中,“相对进口”所推荐的@fseto可能是最好的(或许还有一个from __future__ import absolute_import在顶你模块)。对于与各种Python版本兼容的解决方案,例如,

import sys 
import os 
sys.path.append(os.path.abspath(os.pardir)) 
+1

-1中看到示例。修改库/模块中的sys.path是个不错的主意,因为它可以对其他模块有不可预见的后果。举一个例子,参见[this discussion](http://stackoverflow.com/questions/1893598/pythonpath-vs-sys-path)。 – snapshoe 2010-09-27 02:37:44