<P>这里的问题是路径,考虑这个目录结构</p>
<pre><code>main
- utils/something.py
- utils/other.py
imptest.py
</code></pre>
<p>当您尝试使用中的相对路径导入<code>other</code>到<code>something.py</code>时,您将执行类似<code>from . import other</code>的操作。当您执行<code>$ python something.py</code>时,这将起作用,但当您运行<code>$ python imptest.py</code>时,这将失败,因为在第二个场景中,它搜索不存在的main/other.py</p>
<p>因此,为了解决这个问题,我建议您为something.py&;编写单元测试;other.py并使用<code>$ python -m</code>(mod)命令运行它们。(<strong>我强烈推荐这种方法</strong>)</p>
<p>但是。。。。如果您确实希望现有代码在不做太多修改的情况下工作,那么您可以在<strong>something.py</strong>文件中添加这两行(<strong>这是可行的,但我不推荐这种方法</strong>)</p>
<pre><code>import sys, os
sys.path.append(os.getcwd()) # Adding path to this module folder into sys path
import utils.other as other
def do_something():
print("I am doing something")
def main():
"""
Main function
"""
do_something()
other.do_other()
if __name__ == "__main__":
main()
</code></pre>
<p>以下是一些参考资料,以便更好地理解:</p>
<ul>
<li><a href="https://www.datacamp.com/community/tutorials/unit-testing-python" rel="noreferrer">Unit testing in python</a></li>
<li><a href="https://realpython.com/absolute-vs-relative-python-imports/" rel="noreferrer">Absolute vs Relative Imports in python</a></li>
</ul>