我当前的目录结构
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
答案 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
在这种情况下,您的工作目录现在是包含prem
,my_program
...的工作目录,这意味着test2.py
中的导入将起作用,因为它将在prem
my_program
个包