<p>这是Python,而不是Java,您将相互相关的模块分组到一个单独的包中,这个包是一个文件夹。你知道吗</p>
<p>为了能够从包中导入,您必须先做几件事。你知道吗</p>
<ol>
<li><p>在包中创建<code>__init__.py</code>,让解释器知道它是一个包。如果文件夹中没有这样的文件,它甚至不会改变您是否要从那里导入,它不是一个包,仅此而已。</p></li>
<li><p>此外,如果您想(并且在创建供其他人使用的包时应该这样做)导入<code>__init__.py</code>中的类、函数等,以允许直接从包本身导入它们。</p></li>
</ol>
<p>我举了一个简单的例子:</p>
<p><code>project tree</code>:</p>
<pre><code>/root
test.py
/examplepkg
__init__.py
somemodule.py
</code></pre>
<p>编辑:如果您想让examplepkg有一个“嵌套”的包,比如,它以某种方式依赖的包,您可以创建另一个文件夹,并在其中放置另一个<code>__init__.py</code>并执行相同的操作,然后在examplepkg的<code>__init__.py</code>中您可以进一步“导出”它以供顶级模块查看。如何做到这一点取决于你自己,只要始终如一。你知道吗</p>
<p><code>somemodule.py</code>:</p>
<pre><code>class SomeClass:
def __init__(self):
print("New Instance of SomeClass!")
</code></pre>
<p><code>__init__.py</code>:</p>
<pre><code>from .somemodule import SomeClass # you could see it as exporting
</code></pre>
<p><code>test.py</code>:</p>
<pre><code>from examplepkg import SomeClass
SomeClass()
</code></pre>
<p>有关详细信息,<a href="https://docs.python.org/3/tutorial/modules.html" rel="nofollow noreferrer">read this</a>。你知道吗</p>