48

我有一个 python 脚本,我们将其命名为 script1.py。我可以这样在终端中运行它:

python /path/script1.py
...

但我想像命令行程序一样运行:

arbitraryname
...

我该怎么做 ?

4

4 回答 4

83

您在脚本开头使用shebang 行:

#!/usr/bin/env python

使文件可执行:

chmod +x arbitraryname

并将其放在 PATH 上的目录中(可以是符号链接):

cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname
于 2013-03-23T14:31:42.653 回答
50

分为三个部分:

  1. 在脚本顶部添加一个“shebang”,告诉如何执行脚本
  2. 授予脚本“运行”权限。
  3. 在您的 PATH 中创建脚本,以便您可以从任何地方运行它。

添加一个shebang

您需要在脚本顶部添加一个 shebang,以便 shell 在解析脚本时知道使用哪个解释器。一般是:

#!path/to/interpretter

要在您的机器上找到您的 python 解释器的路径,您可以运行以下命令:

which python

这将搜索您的 PATH 以找到您的 python 可执行文件的位置。它应该返回一个绝对路径,然后你可以使用它来形成你的 shebang。确保你的 shebang 在你的 python 脚本的顶部:

#!/usr/bin/python

运行权限

您必须使用运行权限标记您的脚本,以便您的 shell 在您尝试将其用作命令时知道您想要实际执行它。为此,您可以运行以下命令:

chmod +x myscript.py

将脚本添加到您的路径

PATH 环境变量是一个有序的目录列表,您的 shell 在查找您尝试运行的命令时将搜索这些目录。因此,如果您希望您的 python 脚本成为可以从任何地方运行的命令,那么它需要在您的 PATH 中。您可以看到运行命令的路径的内容:

echo $PATH

这将打印出一长行文本,其中每个目录用分号分隔。每当您想知道从 PATH 运行的可执行文件的实际位置时,您可以通过运行以下命令找到它:

which <commandname>

现在您有两个选择:将脚本添加到 PATH 中已经存在的目录中,或者将新目录添加到 PATH 中。我通常在我的用户主目录中创建一个目录,然后将其添加到 PATH。要将内容添加到您的路径中,您可以运行以下命令:

export PATH=/my/directory/with/pythonscript:$PATH

现在您应该能够在任何地方将您的 python 脚本作为命令运行。但!如果您关闭 shell 窗口并打开一个新窗口,新窗口将不会记住您刚刚对 PATH 所做的更改。因此,如果您希望保存此更改,则需要在 .bashrc 或 .bash_profile 的底部添加该命令

于 2013-03-23T14:46:54.493 回答
12

将以下行添加到开头script1.py

#!/usr/bin/env python

然后使脚本可执行:

$ chmod +x script1.py

如果脚本驻留在PATH变量中出现的目录中,您只需键入

$ script1.py

否则,您需要提供完整路径(绝对路径或相对路径)。这包括当前的工作目录,它应该在你的PATH.

$ ./script1.py
于 2013-03-23T14:31:31.033 回答
2

您需要使用hashbang。将其添加到 python 脚本的第一行。

#! <full path of python interpreter>

然后更改文件权限,并添加执行权限。

chmod +x <filename>

最后使用执行它

./<filename>

如果它在当前目录中,

于 2013-03-23T14:32:05.113 回答