2012-04-22 53 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