如何在多个操作系统中手动告诉Python在脚本本身中使用哪个版本?

时间:2013-05-24 17:30:43

标签: python linux windows version

我在Windows上安装了Python 2.7和3.3,在Linux上安装了Python 2.7和3.2mu。 我如何编写能够在Windows和Linux上使用的Python脚本,使用版本2.X或3.X?

我正在寻找可能会检查当前操作系统的几行代码,并在其余的脚本中使用Python 3.X。

我正在考虑以下几个方面:

if operating_system == Windows:
    run rest of script with C:\python_directory3.X\python
elif operating_system == Linux:
    run rest of script with /usr/bin/python3.X

这样的代码是否存在,或者我是否必须为两个操作系统制作不同的脚本?

2 个答案:

答案 0 :(得分:3)

在UNIX系统上,Python commands should be named as prescribed in PEP-394,因此使用shebang是最佳解决方案:

#!/usr/bin/env python2

#!/usr/bin/env python3

视情况而定,位于文件的顶部。

在Windows下,它的定义不太明确。从版本3.3开始,a launcher应包含在Python中,如PEP-397中所述。但是,这对旧版本没有帮助。

如果您想在Windows下确定,许多人使用py2exe,Cx_Freeze或其他类似工具来生成包含解释器的可执行文件。在某些情况下,这可能是一个有效的解决方案。

一个好主意是在代码中添加一个检查(检查解释器的版本),并给出一个清晰,易于理解的消息,他们使用的是错误的Python版本,也许还有关于如何使用的链接解决这个问题。这不会神奇地解决任何问题,但这意味着如果所有其他方法都失败了,那么用户就有机会了解出了什么问题。

答案 1 :(得分:0)

您可以使用os模块或sys模块识别运行脚本的操作系统。两者都显示不同的结果,但相似:

import os
os.name #"posix" for linux "nt" for windows
# or 
import sys
sys.platform # "linux2" for linux