当我从命令行运行Python脚本时
./file.py
当我使用以下命令运行它时,它的解释方式不同(失败并出现一堆错误)
python file.py
为什么他们的执行方式不同?
答案 0 :(得分:9)
在类Unix系统上:
./file.py
要求file.py
可执行(例如chmod a+x file.py
)。./file.py
运行脚本,其中包含在shebang行中指定的任何解释器; python file.py
以python
中名为$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}}开始。