在没有Python命令的terminal中运行python脚本

我有一个python脚本,我们把它命名为script1.py。 我可以这样在terminal上运行它:

python /path/script1.py ... 

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

 arbitraryname ... 

我该怎么做 ?

你在脚本开始时使用一个shebang行 :

 #!/usr/bin/env python 

使文件可执行:

 chmod +x arbitraryname 

并把它放在你的PATH目录(可以是一个符号链接):

 cd ~/bin/ ln -s ~/some/path/to/myscript/arbitraryname 

有三个部分:

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

添加一个shebang

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

 #!path/to/interpretter 

要find你的机器上的Python解释器的path,你可以运行命令:

 which python 

这将search你的PATH来find你的python可执行文件的位置。 它应该回来一个绝对的path,然后你可以用它来形成你的屁股。 确保你的shebang位于你的python脚本的顶部:

 #!/usr/bin/python 

运行权限

你必须用运行权限来标记你的脚本,这样你的shell就会知道你想在你试图把它作为一个命令使用的时候实际执行它。 要做到这一点,你可以运行这个命令:

 chmod +x myscript.py 

将脚本添加到您的path

PATH环境variables是一个有序的目录列表,当你寻找一个你正在运行的命令时,你的shell将会search这个目录。 所以,如果你想让你的Python脚本成为一个命令,你可以从任何地方运行,那么它需要在你的PATH中。 您可以看到运行该命令的path的内容:

 echo $PATH 

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

 which <commandname> 

现在你有两个select:将你的脚本添加到PATH中的一个目录中,或者添加一个新的目录到PATH中。 我通常在我的用户主目录中创build一个目录,然后添加PATH。 要将东西添加到path中,可以运行以下命令:

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

现在你应该可以在任何地方作为命令运行你的python脚本。 但! 如果closuresshell窗口并打开一个新窗口,新的窗口将不会记住刚刚对PATH所做的更改。 所以如果你想保存这个改变,那么你需要在你的.bashrc或.bash_profile的底部添加这个命令

script1.py下行添加到开始script1.py

 #!/usr/bin/env python 

然后使脚本可执行:

 $ chmod +x script1.py 

如果脚本驻留在出现在PATHvariables中的目录中,则可以简单地键入

 $ script1.py 

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

 $ ./script1.py 

你需要使用hashbang 。 把它添加到你的python脚本的第一行。

 #! <full path of python interpreter> 

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

 chmod +x <filename> 

最后用它来执行

 ./<filename> 

如果它在当前目录中,