擅长:python、mysql、java
<p>这是因为您以<code>__main__</code>的身份运行脚本。运行这样的脚本时:</p>
<pre><code>python /path/to/package/module.py
</code></pre>
<p>该文件是作为<code>__main__</code>加载的,而不是作为<code>package.module</code>加载的,因此它不能执行相对导入,因为它不是包的一部分。在</p>
<p>这会导致奇怪的错误,在脚本中定义的类被定义两次,一次是<code>__main__.Class</code>,另一次是<code>package.module.Class</code>,这可能导致<code>isinstance</code>检查失败和类似的奇怪情况。因此,通常不应该直接运行模块。在</p>
<p>对于您的测试,您可以删除tests目录中的<code>__init__.py</code>,只使用绝对导入而不是相对导入。事实上,您的测试可能根本不应该在包中。在</p>
<p>或者,您可以创建一个测试运行程序脚本来导入并运行测试。在</p>