Guy*_*zmo 8 python shell shebang python-3.x
我需要编写一个与 Python 2 和 Python 3 兼容的 Python 脚本,可以直接从 shell 调用(意味着它有一个 shebang),并且可以在安装了任一 Python 版本(但可能不能同时安装)的系统上运行。
通常我可以为 Python 2 编写一个 shebang,如下所示:
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
对于 Python 3:
#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)
但如果未安装相应的 Python 版本,这两种方法都会失败,因为据我所知,具有 Python 3 但不具有 Python 2 的系统不会别名或符号链接python到python3. (如果我错了,请纠正我。)
那么有没有一种方法可以使用 shebang 编写 Python 脚本,只要安装了其中一个,就可以使用 Python 2 或 Python 3 执行脚本?
这主要是为了解决从即将发布的 macOS 版本中删除 Python 2 的问题, (注:我最初是在错误的理解下写的,认为 Python 2 将在 macOS 中被 Python 3 取代,但实际上 Apple 正在完全删除 Python。)但也适用于 Linux。
实际上,我只是指定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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |