代码之家  ›  专栏  ›  技术社区  ›  jsalonen

使用execv运行时指定python解释器的跨平台方法

  •  0
  • jsalonen  · 技术社区  · 15 年前

    我目前正在Linux和Windows7上运行一个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
    

    那么:我有没有办法指定多个口译员呢?

    2 回复  |  直到 13 年前
        1
  •  1
  •   mechanical_meat nazca    15 年前
    #!/usr/bin/env python
    

    那会叫 env 程序来搜索路径中的python可执行文件。

    如果需要确保特定版本的python,可以这样做,例如:

    #!/usr/bin/env python2.5
    
        2
  •  2
  •   Thomas Leonard    13 年前

    取决于您要做什么,这可能有点重,但0安装程序可以运行您的程序将为您的平台提供合适的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

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

    请注意,即使您只是以Linux为目标,您也可能希望这样做,因为在Python3中没有单一的!在所有平台上工作的生产线(一些平台,如Arch,需要“python2”而不是“python”,而其他平台,如debian,不提供“python2”,只提供“python”)。

    推荐文章