我需要撰寫一個與 Python 2 和 Python 3 兼容的 Python 腳本,可以直接從 shell 呼叫(意味著它有一個 shebang),并且可以在安裝了任一 Python 版本的系統上運行,但可能不能同時運行。
通常我可以像這樣為 Python 2 撰寫一個shebang:
#!/usr/bin/env python
對于 Python 3:
#!/usr/bin/env python3
但是,如果未安裝相應的 Python 版本,這兩種方法都會失敗,因為據我所知,具有 Python 3 但沒有 Python 2 的系統不會別名或符號鏈接python到python3. (如果我錯了,請糾正我。)
那么有沒有辦法用shebang撰寫一個Python腳本,只要安裝了其中一個,它就會使用Python 2或Python 3執行腳本?
這主要是為了解決從即將發布的 macOS 版本中洗掉 Python 2 的問題,但也適用于 Linux。
uj5u.com熱心網友回復:
實際上,我只會指定python3并將其作為先決條件。
但是,在技術上可以誘使 Python 檔案成為它自己的 shell 腳本包裝器:
#!/bin/sh
''':'
for name in python3 python2 python
do
type "$name" > /dev/null 2>&1 && exec "$name" "$0" "$@"
done
echo >&2 "Please install python"
exit 1
':'''
print("Hello from Python")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341197.html
下一篇:連接具有增量列的檔案的內容只有1
