Possible Duplicate:
How to properly use relative or absolute imports in Python modules?
我有这个文件布局,如本例所示: (在此处下载:http://www.mediafire.com/?oug42nzvxrvoms4) http://www.python.org/dev/peps/pep-0328/#guido-s-decision
moduleX包含:
from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
from ...package import bar
from ...sys import path
这就是发生的事情:
C:\package\subpackage1>python moduleX.py
Traceback (most recent call last):
File "moduleX.py", line 1, in <module>
from .moduleY import spam
ValueError: Attempted relative import in non-package
我有Python2.7.2。我有
__init__.py
每个目录中的文件。 为什么这个代码不起作用?
从文档中:
你可以看到:
通过将其作为
python moduleX.py
运行,您正是在执行上述操作。相反,请尝试以下操作:这将导入moduleX并将顶层放在package。从层次结构的顶部运行:
即,在您的情况下,直接从
c:\
:注意一件事-
moduleX.py
中的导入如下:倒数第二个:
要求根文件夹(
c:\
)是一个包(即have__init__.py
)。此外,它还需要在package\__init__.py
中定义的bar变量,而该变量当前不存在(因此将bar = 'bar!'
放在那里进行测试)。它还要求您向上一级-因此您必须将package
文件夹放在另一个文件夹中(这样您最终会得到c:\toppackage\package
),然后运行c:\python -m toppackage.package.subpackage1.moduleX
。对于这一行:
在上面的PEP 328链接中有一个注释:
另请参阅其他可能有帮助的soq:
希望这有帮助。
相关问题 更多 >
编程相关推荐