2010-09-27 96 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