擅长:python、mysql、java
<p>通常,当您将python模块作为<code>python filename.py</code>这样的主模块运行时,您不能使用相对导入,但是有一种使用<code>__package__</code>来实现这一点的方法。请记住<code>__package__</code>是python解析相对导入的方式:</p>
<p>1-在根目录中创建一个名为<code>__init__.py</code>的文件-<code>fff</code>。(我可以看到你有它,我提到的完整性)</p>
<p>2-将此代码放在<code>test.py</code>模块的顶部:</p>
<pre><code>if __name__ == '__main__' and not __package__:
import sys
sys.path.insert(0, <path to parent directory of root directory - fff>)
__package__ = 'fff.obng'
</code></pre>
<p>注意:<code>sys.path</code>是python搜索模块以导入模块的地方</p>
<p>3-现在将相对导入语句放在上面的代码之后(在if语句中,因为我们不想在导入<code>test.py</code>时弄乱):</p>
<pre><code>from ..fg.settings import settings
</code></pre>
<p>现在您可以调用<code>test.py</code>,它将毫无问题地运行。我不建议使用这些技巧,但在某些情况下,展示语言的灵活性和做你想做的事情是有益的</p>
<p>其他好的解决方案:我认为绝对进口比这更容易、更干净。另外,看看@Mr_and_Mrs_D的答案,另一个好的解决方案是使用<a href="https://docs.python.org/3/using/cmdline.html#cmdoption-m" rel="nofollow noreferrer">^{<cd10>}</a>命令行标志运行模块</p>