Python 2.7:在包中运行python文件

时间:2015-03-04 11:42:51

标签: python python-2.7

我有三个文件夹:

/main
    __init__.py
    main.py
    /p1
        __init__.py
        p1.py
    /p2
        __init__.py
        p2.py

然而p1的某些部分依赖于p2,我从p2导入p1的方式是使用绝对包而不是相对包:< / p>

from main.p2.p2 import p2class

当我想通过输入以下内容单独运行p1时会出现问题:

cd main\p1 
python p1.py

然而,它说:

ImportError: No module named main.p2.p2

如何单独运行?

文件来源如下:

main\p1\p1.py

from main.p2.p2 import p2print

def p1print():
    print "p1 printing"

if __name__ == "__main__":
    p2print()
    p1print()

main\p2\p2.py

def p2print():
    print "p2 printing"

if __name__ == "__main__":
    p2print()

2 个答案:

答案 0 :(得分:1)

从/ main目录的外部,使用python -m运行它。

➜ python -m main.p1.p1
p2 printing
p1 printing

答案 1 :(得分:0)

您必须从p2.p2而不是main.p2.p2导入,因为基本包位于main中。如果您希望main.p2.p2,则必须将main文件夹的路径插入sys.path