运行./file.py和python file.py有什么区别?

时间:2014-08-12 04:06:54

标签: python shell command-line

当我从命令行运行Python脚本时

./file.py

当我使用以下命令运行它时,它的解释方式不同(失败并出现一堆错误)

python file.py

为什么他们的执行方式不同?

1 个答案:

答案 0 :(得分:9)

在类Unix系统上:

  • ./file.py要求file.py可执行(例如chmod a+x file.py)。
  • ./file.py运行脚本,其中包含在shebang行中指定的任何解释器; python file.pypython中名为$PATH的解释器最高运行python。如果您有多个版本的Python,这可能会产生很大的不同。

如果您不知道$PATH中哪个which python最高,请输入python,它会告诉您。

如果您希望shebang行运行$PATH#!/usr/bin/env python 的最高值,请将其写为:

./file.py

在Windows上:

  • *.py使用注册的任何应用程序运行脚本来处理python file.py个文件,而python.exe使用%PATH%中最高的cmd.exe解释器运行它}。同样,如果你有多个版本的Python,这可以产生很大的不同。

请注意,与Unix shell不同,Windows *.py并不关心shebang,只关心扩展。但是,如果您安装了足够新的Python版本,则注册处理./file.py文件的应用程序将是PEP 397 Python启动器, 查看shebangs 。 (您也可以为旧版本的Python获取启动器separately。)


根据您的评论,第一行是:

  

只是程序的一个开始,即导入套接字

听起来你根本就没有shebang线。这意味着,如果您使用类似Unix的系统,/bin/sh将使用默认解释器运行它 - 在Unix上是import: command not found和大多数类似于Unix的系统,它们不是ta Python解释器。因此,您可能会遇到一堆令人困惑的错误,可能从{{1}}开始。