在没有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
有三个部分:
- 在脚本的顶部添加一个“shebang”,告诉如何执行脚本
- 给脚本“运行”权限。
- 在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
如果脚本驻留在出现在PATH
variables中的目录中,则可以简单地键入
$ script1.py
否则,您将需要提供完整path(绝对或相对)。 这包括当前的工作目录, 不应该在你的PATH
。
$ ./script1.py
你需要使用hashbang 。 把它添加到你的python脚本的第一行。
#! <full path of python interpreter>
然后更改文件权限,并添加执行权限。
chmod +x <filename>
最后用它来执行
./<filename>
如果它在当前目录中,