<p>在Python 3.3中,包含一个<a href="https://docs.python.org/3.6/using/windows.html#python-launcher-for-windows" rel="nofollow noreferrer">launcher for Windows</a>:<code>py</code>(对于GUI或非UI应用程序,<code>pyw</code>)</p>
<blockquote>
<p>which aids in locating and executing of different Python versions. It allows scripts (or the command-line) to indicate a preference for a specific Python version, and will locate and execute that version.</p>
<p>Unlike the PATH variable, the launcher will correctly select the most appropriate version of Python. It will prefer per-user installations over system-wide ones, and orders by language version rather than using the most recently installed version.</p>
</blockquote>
<p>Python安装程序默认情况下会将Python的文件扩展名链接到<code>open</code>动词,因此您只需键入Python文件的名称(如果需要,还可以键入参数)就可以运行该文件。</p>
<ul>
<li><code>py</code>:<code>.py</code>,<code>.pyc</code>和<code>.pyo</code>(<a href="https://docs.python.org/3/distutils/apiref.html?highlight=pyc#distutils.util.byte_compile" rel="nofollow noreferrer">byte-compiled</a>)和<code>.pyz</code>(<a href="https://docs.python.org/3/library/zipapp.html" rel="nofollow noreferrer">zip-compressed</a>)。</li>
<li><code>pyw</code>:<code>.pyw</code>和<code>.pyzw</code>(压缩压缩)。</li>
</ul>
<p>警告:<a href="https://stackoverflow.com/questions/9705982/pythonw-exe-or-python-exe/30313091#30313091">be aware of the differences between python.exe and pythonw.exe</a></p>
<hr/>
<p>除其他优点外,Windows启动程序读取“nix shebangs,因此可以指定Python版本或<code>python.exe</code>的<a href="https://docs.python.org/3/using/cmdline.html" rel="nofollow noreferrer">command line arguments</a></p>
<p>您可以在运行此脚本时检查此项(假设py3为默认值):</p>
<pre><code>#! /usr/bin/python2.7 -i
import sys
print(sys.version)
</code></pre>
<ul>
<li><code>myscript.py</code>:与<code>py</code>一起运行,启动<code>python2.7</code>,完成后进入交互模式(<code>-i</code>,非常适合测试和调试)。</li>
<li><code>myscript.py -3</code>:与<code>py</code>一起运行,启动<code>python3</code>,并保持交互模式。</li>
<li><code>python myscript.py</code>:使用默认的python运行时运行,没有交互模式。</li>
</ul>
<hr/>
<p>您可以使用<code>ftype</code>更改此默认关联,但我强烈建议:</p>
<ul>
<li>Nirsoft的<a href="http://www.nirsoft.net/utils/file_types_manager.html" rel="nofollow noreferrer">File Types Manager</a>实用程序。</li>
<li>查看有关文件扩展名和关联的msdn文档:<a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ff521657(v=vs.85).aspx" rel="nofollow noreferrer">Implementing a Custom File Format</a>。</li>
</ul>
<p>您可以很容易地将其他动词(如<code>edit</code>、<code>test</code>、<code>debug</code>…)与这些文件关联起来。</p>
<hr/>
<p>此外,还可以通过将Python的扩展名添加到<code>PATHEXT</code>环境变量(按首选项排序)中,从而省略Python在终端中运行文件的扩展名。(必须重新打开终端才能使更改生效)。</p>
<p><code>setx PATHEXT %PATHEXT%;.PYC;.PYZ;.PY</code></p>