我需要编写一个与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中的一个,它就可以使用Python 2或Python 3来执行脚本呢?
这主要是为了解决从即将发布的macOS * 版本中移除Python 2的问题(注:我最初写这篇文章是因为我错误地认为Python 2将在macOS中被Python 3取代,但实际上苹果正在完全删除Python。)* 但也可以适用于Linux。
2条答案
按热度按时间y0u0uwnf1#
实际上,我只会指定
python3
并将其作为先决条件。然而,从技术上讲,可以欺骗Python文件成为自己的shell脚本 Package 器:
htrmnn0y2#
这似乎允许选择python3而不是python2,并且如果找到,将使用其中一个。Snagged from here,并且允许您处理一些人在他们的计算机上只安装了python2,而另一些人只安装了python3的情况