在非包python中尝试相对导入

时间:2014-04-24 19:38:21

标签: python

我当前的目录结构

prem
.
├── __init__.py
├── test1.py
├── test2.py

test1.py

print 'test1.py'

test2.py

import  sys
sys.path.append('/opt/sw/p3/src/prem')
print sys.path
from . import test1

错误

    from . import test1
ValueError: Attempted relative import in non-package

当我显示路径时,我看到了这个目录 - / opt / sw / p3 / src / prem

1 个答案:

答案 0 :(得分:1)

如果您直接运行test2.py,则prem已经是工作目录。

调用from .相当于调用from prem但是如果prem已经是您的工作目录,它现在将尝试在当前包中找到另一个包prem < / p>

尝试这种布局:

/my_program
    /prem
    ├── __init__.py
    ├── test1.py
    ├── test2.py
    main_test.py

main_test.py

import prem.test2

在这种情况下,您的工作目录现在是包含premmy_program ...的工作目录,这意味着test2.py中的导入将起作用,因为它prem

中找到my_program个包