运行 Python 脚本而不输入其 `.py` 扩展名

运行 Python 脚本而不输入其 `.py` 扩展名

我在 MacOS Catalina 上使用 Zsh。

我在读使用 Python 自动化枯燥的工作作者只需在终端中mapIt.py输入即可运行。mapit

为了做到这一点,我在代码顶部添加了一个 shebang:

#!/usr/bin/env python

我也标记了它chmod +x script.py并将目录添加到我的PATH

但是为了运行它,我需要输入script.py。输入script不起作用。
我该怎么做?

答案1

我认为我在网上找到的.此片段

C:\> mapit 870 Valencia St, San Francisco, CA 94110

(即C:\>)和其他细节表明作者使用 Windows。在 Windows 中,可以通过键入不带扩展名的名称来运行某些扩展名的文件。作者很可能已为 启用了该功能.py。比较一下:使 Python 脚本在 Windows 上运行而不指定.py扩展名

在Unix/Linux中.py,inscript.py只是名称的一部分。没有扩展的概念(除了用户头脑中的概念)。

因此只需将脚本命名script为 而不是。如果您希望无论键入或script.py都能运行相同的脚本,则将脚本放在一个名称下,并从另一个名称创建到实际脚本的符号链接。script.pyscript

注意(至少在 Linux 中)有script(1)实用程序。根据您的PATH命令script将运行脚本或实用程序(如果已安装)。


另一种方法是让 shell在结果为foo.py时尝试运行(对于任何)。请参阅以下一般问题:foocommand not foundfoo

并以这两个答案为例(注意,它们针对的是 Bash):

在 Zsh 中,该函数名为command_not_found_handler. 通过将其中一个示例移植到 Zsh 来构建您的解决方案。

相关内容