python /path/script1.py
...
但我希望它能像命令行程序一样运行:
arbitraryname
...
我该如何做到这一点?
python /path/script1.py
...
但我希望它能像命令行程序一样运行:
arbitraryname
...
我该如何做到这一点?
你在脚本开头使用一个shebang行:
#!/usr/bin/env python
使文件可执行:
chmod +x arbitraryname
将其放在您的 PATH 目录中(可以是符号链接):cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname
有三个步骤:
您需要在脚本顶部添加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中。你可以使用以下命令查看你的path内容:
echo $PATH
这将打印出一长串文本,每个目录之间由分号分隔。当你想知道从PATH运行的可执行文件的实际位置时,可以通过运行以下命令找到它:
这将打印出一长串文本,每个目录之间由分号分隔。当你想知道从PATH运行的可执行文件的实际位置时,可以通过运行以下命令找到它:
which <commandname>
现在你有两个选择:将你的脚本添加到已经在PATH中的目录中或者添加一个新目录到PATH中。我通常会在我的用户主目录中创建一个目录,然后将它添加到PATH中。要将东西添加到你的路径中,你可以运行以下命令:
export PATH=/my/directory/with/pythonscript:$PATH
现在,您应该能够在任何地方运行Python脚本作为命令。但是!如果您关闭终端窗口并打开一个新窗口,新窗口将不会记住您刚刚对PATH所做的更改。因此,如果您希望保存此更改,则需要将该命令添加到您的.bashrc或.bash_profile文件的底部。
将以下行添加到script1.py
的开头:
#!/usr/bin/env python
然后使脚本可执行:
$ chmod +x script1.py
PATH
变量中的目录中,您可以直接键入$ script1.py
PATH
中。$ ./script1.py
.bash_profile
文件中(我假设你使用的是bash
),添加以下行:PATH+=":/path/where/script1.py/lives"
,当然要添加正确的目录。 - chepner#! <full path of python interpreter>
chmod +x <filename>
./<filename>
~bin/
是完全不同的东西,那是用户bin
的主目录,而~/bin/
是当前用户的主目录下的bin
子目录。后者是一个常见的每个用户都要添加到PATH
环境变量中的目录。 - Martijn Pieters~username
与当前用户无关,因此whoami
输出是无关紧要的。大多数Linux系统都有一个名为bin
的用户,其主目录设置为/bin
,请参见Linux标准基准。 - Martijn Pieters