擅长:python、mysql、java
<p>加载代码似乎类似于<a href="http://svn.python.org/projects/python/trunk/Lib/ihooks.py" rel="noreferrer">this</a>:</p>
<pre><code> try:
return sys.modules[pkgname]
except KeyError:
if level < 1:
warn("Parent module '%s' not found while handling "
"absolute import" % pkgname, RuntimeWarning, 1)
return None
else:
raise SystemError, ("Parent module '%s' not loaded, cannot "
"perform relative import" % pkgname)
</code></pre>
<p>这让我觉得你的模块可能不在sys.path上。如果启动Python(通常)并在提示符下键入“import mainpack”,它会做什么?它应该能找到它。</p>
<p>我自己也试过了,也犯了同样的错误。读了一点之后,我找到了以下解决方案:</p>
<pre><code># foo/__main__.py
import sys
mod = __import__('foo')
sys.modules["foo"]=mod
__package__='foo'
from .bar import hello
hello()
</code></pre>
<p>我觉得有点老套,但确实管用。技巧似乎是确保包<code>foo</code>已加载,以便导入可以是相对的。</p>