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

标签 python shell command-line

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

./file.py

与我运行它时相比,它的解释不同(因一堆错误而失败):

python file.py

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

最佳答案

在类 Unix 系统上:

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

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

如果您希望 shebang 行运行 $PATH 上最高的 python,请将其写为:

#!/usr/bin/env python

在 Windows 上:

  • ./file.py 使用任何已注册处理 *.py 文件的应用程序运行脚本,而 python file.py 运行它与名为 python.exe 的解释器在您的 %PATH% 上最高。同样,如果您有多个版本的 Python,这会产生很大的不同。

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


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

just a start of the program, i.e. import socket

听起来您根本没有 shebang 行。这意味着,如果你在类 Unix 系统上,./file.py 将使用默认解释器运行它——在 Unix 上是 /bin/sh和大多数 Unix-likes,它根本不是 Python 解释器。因此,您可能会遇到一堆令人困惑的错误,可能以类似 import: command not found 的内容开头。

关于python - 运行 ./file.py 和 python file.py 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255985/

相关文章:

linux - Apache Tomcat 的 startup.sh 中的符号

linux - Linux shell 脚本中的参数

bash - 在 Windows 上的 Ubuntu 上的 Bash 中复制粘贴

command-line - 如何检查用户的计算机是否支持 Emoji?

python - 在字符串中查找短语

python - Tensorflow如何管理图?

linux - 从文本文件中提取包含 URL 的列

command-line - 当组件名称包含逗号时,无法使用 CLI 在 Jira 中创建问题

python - Pandas `transform(set)` 引发异常

python - 如何在 URL 中的最后一个斜杠之后获取所有内容?