擅长:python、mysql、java
<p>您正在从包“sub”导入。<code>start.py</code>本身不在包中,即使存在<code>__init__.py</code>。</p>
<p>您需要从<code>parent.py</code>上的一个目录启动程序:</p>
<pre><code>./start.py
./pkg/__init__.py
./pkg/parent.py
./pkg/sub/__init__.py
./pkg/sub/relative.py
</code></pre>
<p>使用<code>start.py</code>:</p>
<pre><code>import pkg.sub.relative
</code></pre>
<p>现在pkg是顶级包,您的相对导入应该可以工作。</p>
<hr/>
<p>如果你想坚持你当前的布局,你可以使用<code>import parent</code>。因为使用<code>start.py</code>启动解释器,所以<code>start.py</code>所在的目录位于python路径中。<code>parent.py</code>作为一个单独的模块存在。</p>
<p>如果不将任何内容导入到目录树上的脚本中,也可以安全地删除顶层<code>__init__.py</code>。</p>