2012-04-22 66 views
24

這裏是目錄結構:如何從兄弟目錄中導入Python腳本?

parent_dir/ 
    foo_dir/ 
     foo.py 
    bar_dir/ 
     bar.py 

如何導入bar.py到foo.py?

+0

參見:https://stackoverflow.com/questions/6323860/sibling-package-imports/27878845#27878845 – 2015-01-10 17:10:48

回答

25

如果所有發生的目錄是Python的,即它們都含有__init__.py,那麼你可以使用

from ..bar_dir import bar 

如果目錄不在Python包,您可以通過sys.path亂搞做到這一點,但你不應該。

+0

,如果你想在非包導入這不會工作,你只是從兄弟姐妹運行一個Python。在這種情況下,sys.path.append是要走的路線 – mhstnsc 2017-11-01 13:42:04

+1

@mhstnsc在這種情況下,我會說你做錯了什麼,但如果它只是一些黑客腳本,可能會用'sys.path'搞亂。 – 2017-11-01 20:37:41

+0

它沒有錯,但是當運行主模塊時,你不能進行相對導入。 https://www.python.org/dev/peps/pep-0366/ – mhstnsc 2017-11-02 08:16:15

12

對於廣義導入,您可以使用sysos模塊。在foo.py開始與線

import sys 
import os 
sys.path.append(os.path.abspath('../bar_dir')) 
import bar