gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:44:47 24 4
gpt4 key购买 nike

当我从命令行运行 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com