2012-09-11 127 views
1

有沒有辦法找出一個子文件夾中當前項目的路徑?如何在Python中獲取項目的當前路徑?

如果我有比如像:

/ 
    main.py 
    /utils 
     utilities.py 
    /foo 
     foo.py 
     /foo/bar 
      bar.py 

雖然/foo/foo.py/foo/bar/bar.py編碼我想包括位於/utils/utilities.py的「實用工具」模塊,我怎樣才能做到這一點通過調用某種相對路徑到項目,然後只需導入這個幫手模塊?

我能夠檢索文件的路徑是與執行:

os.path.realpath(os.path.abspath(os.path.split(inspect.getfile(inspect.currentframe()))[0])) 

但我需要的是當前項目的相對或絕對路徑。

在此先感謝。

+4

您是否熟悉[內部軟件包引用](http://docs.python.org/tutorial/modules.html#intra-package-references)? –

+0

可能重複;看一看:http://stackoverflow.com/a/6098238/1107807 –

+0

我得到這個在這裏提供了一個示例工作: cmd_subfolder = os.path.realpath(os.path.abspath則(os.path.join( os.path.split(inspect.getfile(inspect.currentframe()))[0],「../../ utils /」))) –

回答

3

,如果你設置你的項目了作爲一個整體,在這種情況下應該是那樣簡單你並不需要擔心的路徑把一個空__init__.py到每個文件夾:

/src 
    __init__.py 
    main.py 
    foo/ 
     __init__.py 
     foo.py 
     /bar 
     __init__.py 
     bar.py 
    util/ 
     __init__.py 
     utilities.py 

現在,main.pyfoo.pybar.py可以通過一個簡單的導入utilities模塊:

from util import utilities 
2

我用一個例子在這裏工作提供:

cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile(inspect.currentframe()))[0],"../../utils/"))) 
相關問題