gpt4 book ai didi

python - 如何检查应该使用哪个Python版本

转载 作者:行者123 更新时间:2023-12-01 04:51:40 34 4
gpt4 key购买 nike

假设我有一堆 python 脚本,全部以 #!/usr/bin/env python 开头,或者什么都没有(根本没有 shebang)。其中一些脚本需要 python 2.7(或任何 2.x 版本),其中一些需要 python 3.x,其中一些可以在两者上运行(这些检查本身的 python 版本)。

我的系统有两个版本的 python:python2python3。一般的python程序只是一个符号链接(symbolic link)。

由于这个python符号链接(symbolic link)可以更改,我想编辑脚本中的shebangs以指定该脚本是否应使用python2python3。是否有可能/程序/脚本来“解析”Python脚本并确定它是否应该由python2python3运行?

最佳答案

PEP 394 - The "python" Command on Unix-Like Systems :

  • ... python should be used in the shebang line only for scripts that are source compatible with both Python 2 and 3.

  • in preparation for an eventual change in the default version of Python, Python 2 only scripts should either be updated to be source compatible with Python 3 or else to use python2 in the shebang line.

一般来说,Python 2 和 3 都可以运行相同的脚本。这意味着(至少对于某些脚本)您必须阅读源代码并自行决定应使用哪个 Python 版本。

Is there any possibility/program/script to 'parse' a python script and determine if it should get run by python2 or python3?

您可以尝试使用 python2python3 二进制文件编译您的脚本,请尝试:

$ python -mcompileall -h

如果只有python3二进制文件可以编译脚本,您可以将python3添加到shebang中。

Modernize, Futurize, Pylint packages还可以帮助自动查找仅限 python2、仅限 python3 的脚本。

lib2to3允许您检测 python2python3 标记,例如源中是否存在 print 语句(Python 2 标记)或是否存在 yield from 源(Python 3 标记)中的,但它的级别可能太低。

关于python - 如何检查应该使用哪个Python版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306678/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com