擅长:python、mysql、java
<p>将包和<code>main</code>脚本放入外部容器目录,如下所示:</p>
<pre><code>container/
main.py
top_package/
__init__.py
level_one_a/
__init__.py
my_lib.py
level_two/
__init__.py
hello_world.py
level_one_b/
__init__.py
my_lib.py
</code></pre>
<p>运行<code>main.py</code>时,其父目录(<code>container</code>)将自动添加到<code>sys.path</code>的开头。由于<code>top_package</code>现在位于同一目录中,因此可以从包树中的任何位置导入它。</p>
<p>所以<code>hello_world.py</code>可以像这样导入<code>level_one_b/my_lib.py</code>:</p>
<pre><code>from top_package.level_one_b import my_lib
</code></pre>
<p>无论容器目录的名称是什么,或者它位于何处,导入都将始终使用这种安排。</p>
<p>但是请注意,在原来的示例中,<code>top_package</code>它可以很容易地充当容器目录本身。你所要做的就是删除<code>top_package/__init__.py</code>,这样你就只剩下同样的安排了。</p>
<p>然后,上一个import语句将更改为:</p>
<pre><code>from level_one_b import my_lib
</code></pre>
<p>您可以随意重命名<code>top_package</code>。</p>