Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查应该使用哪个python版本_Python_Python 3.x_Python 2.x - Fatal编程技术网

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

如何检查应该使用哪个python版本,python,python-3.x,python-2.x,Python,Python 3.x,Python 2.x,假设我有一堆python脚本,都是以/usr/bin/env python或完全没有shebang。有些脚本需要Python2.7或任何2.x版本,有些脚本需要Python3.x,有些脚本可以在这两个版本上运行—检查python版本本身 我在一个有两个python版本的系统上:python2和python3。通用python程序只是一个符号链接 由于这个python符号链接可以更改,我想编辑脚本中的shebang,以指定这个脚本应该使用python2还是python3。有没有可能通过/progr

假设我有一堆python脚本,都是以/usr/bin/env python或完全没有shebang。有些脚本需要Python2.7或任何2.x版本,有些脚本需要Python3.x,有些脚本可以在这两个版本上运行—检查python版本本身

我在一个有两个python版本的系统上:python2和python3。通用python程序只是一个符号链接

由于这个python符号链接可以更改,我想编辑脚本中的shebang,以指定这个脚本应该使用python2还是python3。有没有可能通过/program/script来“解析”python脚本并确定它是否应该由python2或python3运行?

首先,将python2或python3放在!线在*nix上,当您尝试直接“执行”文件时,操作系统应读取该行并选择适当的二进制文件。在Windows上,省略“usr/bin/env”并使用py.exe运行该文件,该文件现在随PSF CPython安装程序一起安装。示例:tem.py包含

#! python2
import sys; print(sys.version)
在命令行

C:\Users\Terry>py /programs/python34/tem.py
2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)]
如果我将文件中的2更改为3,则输出将更改为3.4.2。

。。。python应该只在shebang行中用于 源代码与Python2和Python3兼容

为最终更改的默认版本做准备 Python,python2-only脚本应该更新为源代码 与Python3兼容,或者在shebang行中使用python2

通常,Python2和Python3都可以运行相同的脚本。这意味着,至少对于某些脚本,您必须阅读源代码并自行决定应该使用哪种Python版本

是否有可能/程序/脚本“解析”python脚本和 确定它应该由python2还是python3运行

您可以尝试使用python2和python3二进制文件编译脚本,请尝试:

$ python -mcompileall -h
如果只有python3二进制文件可以编译脚本,那么可以将python3添加到shebang中

还可以帮助自动查找仅python2、仅python3脚本


允许您检测python2或python3标记,例如源Python 2标记中存在print语句或源Python 3标记中存在yield from,但其级别可能太低。

您是否尝试在脚本上运行2to3以查看它是否找到任何内容?明确的指示可能是使用print x而不是printx。py2和py3之间还有其他突破性的区别。如果2to3没有抱怨任何事情,那么它是为python3编写的。@kdopen 2to3是官方工具吗?或者这是一个外部程序?应该作为python发行版的一部分安装。但这只是一个粗略的指南。实际上,您需要详细检查脚本,以明确它们是为哪个版本编写的。问题是,如何确定一个特定脚本应该使用哪个版本的python。通过检查是否使用了print或print,例如.yes,但我知道大多数“通用”python脚本仅为2.xb版编写,但我明天将尝试编译: