擅长:python、mysql、java
<p>重用标准函数/类/模块/包的名称从来不是一个好主意。尽量避免。不过,对于你的情况有一些干净的解决方法。</p>
<p>导入<code>SWS.time</code>而不是stdlib <code>time</code>所看到的行为是由于古python版本(2.x)中<code>import</code>的语义所致。要修复它,请添加:</p>
<pre><code>from __future__ import absolute_import
</code></pre>
<p>在文件的最上面。这将把<code>import</code>的语义更改为python3.x的语义,后者更为合理。在这种情况下,声明:</p>
<pre><code>import time
</code></pre>
<p>将只引用顶级模块。因此,解释器在包内执行导入时不会考虑您的<code>SWS.time</code>模块,但它只使用标准库模块。</p>
<p>如果您的包中的模块需要导入<code>SWS.time</code>,您可以选择:</p>
<ul>
<li><p>使用<em>显式</em>相对导入:</p>
<pre><code>from . import time
</code></pre></li>
<li><p>使用绝对导入:</p>
<pre><code>import SWS.time as time
</code></pre></li>
</ul>
<p>所以,你的<code>foo.py</code>应该是:</p>
<pre><code>from __future__ import absolute_import
import time
from . import time as SWS_time
</code></pre>