擅长:python、mysql、java
<p>这是Python2.6中的回归。见<a href="http://bugs.python.org/issue2751" rel="noreferrer">issue2571</a>:</p>
<blockquote>
<p>The ability to execute packages was never intended, since doing so
breaks imports in a variety of subtle ways. It was actually a bug in
2.5 that it was permitted at all, so 2.6 not only disabled it again, but also added a test to make sure it stays disabled (2.4 correctly
rejected it with an ImportError, just as 2.6 does).</p>
</blockquote>
<p>您有几个选项,可以始终指定main来运行它:</p>
<pre><code>$ python -m module.__main__
</code></pre>
<p>或者可以编写一个shell脚本包装器来检测python版本,然后以不同的样式执行它。</p>
<p>或者,您可以在命令行上执行代码,该命令行将导入并运行模块,然后可能将其放入shell脚本中:</p>
<pre><code>$ python -c "import module; module.main()"
</code></pre>
<p>在我自己的命令行项目中,我既有捕获错误(未安装python等)的shell脚本,也有执行导入代码并检测是否安装了必要的模块并提示错误(带有有用的链接或安装文本)。</p>