擅长:python、mysql、java
<p><em>(注意,这个答案是通过将<a href="https://stackoverflow.com/a/16985066/2073595">this answer</a>和<a href="https://stackoverflow.com/q/11536764/2073595">this question</a>的信息拼凑而成的,所以如果你喜欢的话,就去投票吧)</em></p>
<p>这看起来不那么老套,至少在Python2.7+中可以使用:</p>
<pre><code>if __name__ == "__main__" and __package__ is None:
import sys, os.path as path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))
from some_tools_dir import other_utils
</code></pre>
<p>我认为你觉得这很困难的主要原因是在python包中包含可执行脚本实际上是不寻常的。Guido van Rossum实际上称之为<a href="https://mail.python.org/pipermail/python-3000/2007-April/006793.html" rel="nofollow noreferrer">"antipattern"</a>。通常,您的可执行文件位于包的根目录之上,然后可以简单地使用:</p>
^{pr2}$
<p>不用大惊小怪。在</p>
<p>或者,如果您想执行包中的脚本,您实际上将其作为包的一部分调用(同样,从包的父目录调用):</p>
<pre><code>python -m some_tools_dir.other_utils
</code></pre>