簡體   English   中英

使用 execv 運行時指定 Python 解釋器的跨平台方式

[英]Cross-platform way to specify Python interpreter when running with execv

我目前正在 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

那么:有什么方法可以指定多個解釋器?

根據您要執行的操作,這可能有點重,但 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”)。

#!/usr/bin/env python

這將調用env程序在您的 PATH 中搜索 Python 可執行文件。

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

#!/usr/bin/env python3.11

有什么辦法可以指定多個解釋器?

你不需要。 在 Windows 上(至少只要您沒有安裝 CygWin 或類似軟件),Shebang 行被視為普通的 Python 注釋; 這意味着,它被忽略了。 Windows 知道它應該使用 Python 解釋器運行.py.pyw文件,因為它在安裝 Python 時被告知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM