3

我目前在 Linux 和 Windows 7 上运行 Python 脚本。该文件以 execv 样式执行,我的意思是解释器是在命令的文件开头定义的。

在 Windows 系统中,解释器规范为:

#!C:\Python26\python.exe

但是在 Linux 中,这需要

#!/usr/bin/python

我想在两个系统中都运行这个脚本,而不必一次又一次地更改这一行。

我已经尝试了以下内容:

#!C:\Python26\python.exe
#!/usr/bin/python

也:

#!C:\Python26\python.exe;/usr/bin/python

那么:有什么方法可以指定多个解释器?

4

3 回答 3

4

根据您要执行的操作,这可能有点重,但 0install 可以运行您的程序,并为您的平台提供适当的 Python 解释器。在你的程序的 XML 描述中,做这样的事情(例如,如果你想要 Python >= 2.6, < 3):

<command name="run" path="myprog.py">
  <runner interface="http://repo.roscidus.com/python/python">
    <version not-before="2.6" before="3"/>
  </runner>
</command>

见:http ://www.0install.net/local-feeds.html

如果用户还没有它,这也将使 0install 下载合适的 Python 版本。

请注意,即使您只针对 Linux,您也可能希望这样做,因为在 Python 3 中没有单一的 #! 适用于所有平台的行(某些平台,例如 Arch,需要“python2”而不是“python”,而其他平台,例如 Debian,不提供“python2”,只提供“python”)。

于 2013-07-13T17:24:29.077 回答
3
#!/usr/bin/env python

这将调用env程序在您的 PATH 中搜索 Python 可执行文件。

如果您需要确保特定版本的 Python,您可以执行以下操作:

#!/usr/bin/env python2.5
于 2010-10-21T14:42:50.270 回答
1

有什么办法可以指定多个解释器?

你不需要。在 Windows 上(至少只要您没有安装 CygWin 或类似软件),Shebang 行被视为普通的 Python 注释;这意味着,它被忽略了。Windows 知道它应该使用 Python 解释器运行.py.pyw归档,因为它在安装 Python 时被告知。

于 2021-08-01T17:30:08.317 回答