从没有 .py 扩展名的终端运行 python 脚本

jma*_*au5 15 command-line python executable filenames

我想通过简单地输入script从终端调用 python 脚本script.py。这可能吗?如果是这样,如何?

我知道我可以通过在脚本顶部添加#!/usr/bin/env python来避免输入python script.py,但我仍然必须添加后缀.py才能运行脚本。

Pat*_*ick 22

Unix/Linux 文件系统不像 Windows 那样依赖扩展。您不应该需要.py文件末尾的 来运行它。

您可以通过使用解释器调用它来运行该文件:

python ScriptFile
Run Code Online (Sandbox Code Playgroud)

或者通过将其标记为可执行并在第一行定义解释器(例如#!/usr/bin/python)。

如果您无法使用以下命令执行文件:

/Path/to/ScriptFile
Run Code Online (Sandbox Code Playgroud)

检查权限

ls -l ScriptFile
Run Code Online (Sandbox Code Playgroud)

您可能需要添加可执行标志,chmod以便它为您执行。

如果您经常使用自定义脚本,您可能需要确保将存储它们的目录添加到PATH环境变量中。

  • 该文件位于 ~/workspace/python 中。我已经将 ~/workspace/python 添加到我的路径中,我运行了 *sudo chmod a+x script.py",并且我已经将 shebang 行 (#!/usr/bin/env python) 添加到了路径的顶部脚本。我可以通过键入 *script.py* 来运行脚本,但是只键入 *script* 不起作用。 (2认同)
  • 在 unix/linux 中,一切都是一个文件并响应其文件名。您不能将 Script.py 称为脚本。尝试将文件从 script.py 重命名为 script,它应该可以解决您的问题。 (2认同)

dan*_*ann 6

.py扩展是不需要运行脚本。您只需使脚本可执行(例如,通过运行chmod a+x script)并添加shebang 行(#!/usr/bin/env python)。


roo*_*ook 5

作为一种选择,您可以为脚本(.py文件)创建包装器:

例如,您有一个脚本,runme.py因此您可以创建新文件runme来包装脚本:

#!/usr/bin/env python
import runme
Run Code Online (Sandbox Code Playgroud)

然后runme.py仅通过runme在 shell 中调用来调用该功能。

这对于多平台脚本很有用,因为在 Windows 平台上,您可以.py仅通过名称分配要调用的文件,而无需扩展名和头文件中的shebang,但在 linux 平台上则不能,因此包装器出来了。