如何将 Python 脚本变为命令?

如何将 Python 脚本变为命令?

我正在尝试将 python 脚本变成命令,例如:google 的 ipaddr.py(http://code.google.com/p/ipaddr-py/)。我希望能够输入ipaddr并输出我想要的内容。这可能吗?我尝试使用 使其可执行chmod +x,然后将其移动到/bin,但它仍然显示:

No command 'ipaddr' found, did you mean:
 Command 'ipmaddr' from package 'net-tools' (main)
 Command 'ibaddr' from package 'infiniband-diags' (universe)
ipaddr: command not found

答案1

由于 ipaddr.py 是图书馆为了检查和操作 IP 地址,您要做的第一件事是创建一些对象。您可以使用 ipaddr 从字符串、整数或其他 ipaddr 对象创建对象。

查看以下 wiki 页面中的示例:

http://code.google.com/p/ipaddr-py/wiki/Using3144

根据您的需要,从以下位置安装 Python 包皮皮系统范围内并创建一个python脚本(稍后放入/usr/bin)可能是使用命令行实用程序的最佳选择地址

答案2

我对 ipaddr 不太熟悉,所以我只能以问题的标题作为起点,进行一般性回答:

查看您使用的命令(在您的帖子中),您没有使用扩展名.py。 如果您在命令中没有使用它,您也应该将其从脚本本身中删除(并使其确实可执行)。 我查看了脚本的名称,它是 ipaddr*.py*。

并且:如果您想在 $PATH 之外调用脚本,您还必须在命令中添加路径。

继续:

运行 $PATH 之外的脚本:

调用脚本语言扩展 -> 脚本名称应包含扩展名:

    python /path/script_name.py (works if script is either executable or not)
    /path/script_name.py (works only if script is executable, mind the shebang)

调用脚本没有语言扩展:

    /path/script_name (only if executable, mind the shebang)

在 $PATH 中运行脚本可以使用语言扩展来完成,但被认为是不好的做法,所以->脚本名称不应包含扩展名,通过以下命令运行它:

    script_name (works only if executable, mind the shebang)

当然,在重命名或移动脚本到另一个目录之前,您应该确保该脚本没有从移动它的目录中导入任何内容,并且脚本本身没有被其他脚本调用。

使其变得更加复杂:如果该脚本是其自己目录中更全面的结构的一部分,但您仍想通过其名称单独调用它,您可以在~/bin( ln-sf) 中创建指向该脚本的链接。

因此,在此特定情况下:将脚本移至~/bin,使其可执行,删除其语言扩展,注销并重新登录,然后通过其名称运行它。也就是说,如果正如您的问题所暗示的,该文件是/将是一个可运行的脚本。

相关内容