sta*_*tti 21 python unix scripting shebang python-3.x
有没有一种标准方法可以确保python2而不是python3解释python脚本?在我的发行版中,我可以使用#!/ usr/bin/env python2作为shebang,但似乎不是所有的发行版都发布了"python2".我可以明确地调用python的特定版本(例如2.6),但这将排除那些没有该版本的人.
在我看来,当发行版开始将python3作为默认的python解释器时,这将成为一个越来越大的问题.
Eri*_*now 11
http://docs.python.org/library/sys.html#sys.version_info
使用sys模块,您可以确定正在运行的python的版本,并引发异常或退出或您喜欢的任何内容.
更新:
您可以使用它来调用适当的解释器.例如,设置一个小脚本来检查你,并在shbang中使用它.它将检查运行的python版本,如果不是你想要的,找到你想要的.然后它将在该版本的python中运行脚本(或者如果没有找到任何好处则失败).
使用sys.version_info
你可以对它进行简单的价值测试.例如,如果您只想支持2.6或更低版本:
import sys
if sys.version_info > (2,6):
sys.exit("Sorry, only we only support up to Python 2.6!")
Run Code Online (Sandbox Code Playgroud)
在一个非常漫长的过渡时期,这是一个混乱的问题.不幸的是,除了让Python脚本本身在启动后检查之外,没有任何万无一失的跨平台方法可以保证调用哪个Python版本.许多(如果不是大多数)发布Python 3的发行版确保泛型python
命令在默认情况下别名为最新的Python 2版本,而python3
对最新的Python 3具有别名.应该鼓励那些不应该这样做的发行版.但无法保证用户不会覆盖它.我认为在可预见的未来可用的最佳实践是包装商,分销商和用户假设python
参考Python 2,并在必要时在脚本中构建运行时检查.
归档时间: |
|
查看次数: |
901 次 |
最近记录: |