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

如何跨多个操作系统手动告诉Python在脚本本身中使用哪个版本?,python,linux,windows,version,Python,Linux,Windows,Version,我在Windows上安装了Python 2.7和3.3,在Linux上安装了Python 2.7和3.2mu。 如何使用2.X版或3.X版编写一个能够在Windows和Linux上使用的Python脚本 我正在寻找几行代码来检查当前的操作系统是什么,并在脚本的其余部分的任何目录中使用Python3.X 我的想法大致如下: if operating_system == Windows: run rest of script with C:\python_directory3.X\pytho

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

我正在寻找几行代码来检查当前的操作系统是什么,并在脚本的其余部分的任何目录中使用Python3.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
这样的代码是否存在,或者我必须为这两种操作系统生成不同的脚本?

在UNIX系统上,使用shebang是最好的解决方案:

#!/usr/bin/env python2

根据需要,在文件的顶部

在Windows下,它的定义不太清晰。从3.3版开始,Python中应包含,如中所述。然而,这对旧版本没有帮助

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


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

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

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

因为OP在Windows上安装了Python 3.3,所以启动器只需使用shebang行就可以处理它,对吗?@MartijnPieters我不是Windows用户,但据我所知,是的。唯一的问题是,其他人可能没有安装3.3,因此它不是一个完整的解决方案。我认为,在2.x解释器中运行时,将其与一条适当的错误消息结合起来,这是您所能做的最好的事情。@MartijnPieters感谢您提供的文档。知识!顺便说一句,您总是可以通过
sys.executable
获得运行Python可执行文件的绝对路径。
import os
os.name #"posix" for linux "nt" for windows
# or 
import sys
sys.platform # "linux2" for linux