Alp*_*gut 45 python linux command-line
我有一个python脚本,我们将它命名为script1.py.我可以这样在终端上运行它:
python /path/script1.py
...
Run Code Online (Sandbox Code Playgroud)
但我想像命令行程序一样运行:
arbitraryname
...
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?
Mar*_*ers 78
您在脚本开头使用shebang行:
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
使文件可执行:
chmod +x arbitraryname
Run Code Online (Sandbox Code Playgroud)
并将其放在PATH上的目录中(可以是符号链接):
cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname
Run Code Online (Sandbox Code Playgroud)
小智 49
有三个部分:
您需要在脚本的顶部添加一个shebang,以便shell在解析脚本时知道要使用哪个解释器.通常是:
#!path/to/interpretter
Run Code Online (Sandbox Code Playgroud)
要在计算机上查找python解释器的路径,可以运行以下命令:
which python
Run Code Online (Sandbox Code Playgroud)
这将搜索您的PATH以查找您的python可执行文件的位置.它应该以绝对路径返回,然后您可以使用它来形成您的shebang.确保你的shebang位于你的python脚本的顶部:
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
您必须使用运行权限标记脚本,以便在尝试将其用作命令时,shell知道您希望实际执行它.为此,您可以运行此命令:
chmod +x myscript.py
Run Code Online (Sandbox Code Playgroud)
PATH环境变量是shell在查找您尝试运行的命令时将搜索的目录的有序列表.因此,如果您希望您的python脚本是一个命令,您可以从任何地方运行,那么它需要在您的PATH中.您可以看到运行该命令的路径的内容:
echo $PATH
Run Code Online (Sandbox Code Playgroud)
这将打印出一长串文本,其中每个目录由分号分隔.每当您想知道从PATH运行的可执行文件的实际位置时,您可以通过运行以下命令找到它:
which <commandname>
Run Code Online (Sandbox Code Playgroud)
现在您有两个选择:将脚本添加到PATH中已有的目录中,或者将新目录添加到PATH中.我通常在用户主目录中创建一个目录,然后将其添加到PATH中.要在路径中添加内容,可以运行以下命令:
export PATH=/my/directory/with/pythonscript:$PATH
Run Code Online (Sandbox Code Playgroud)
现在你应该可以在任何地方将python脚本作为命令运行.但!如果您关闭shell窗口并打开一个新窗口,新窗口将不会记住您刚刚对PATH所做的更改.因此,如果您希望保存此更改,则需要在.bashrc或.bash_profile底部添加该命令.
che*_*ner 11
将以下行添加到开头 script1.py
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
然后使脚本可执行:
$ chmod +x script1.py
Run Code Online (Sandbox Code Playgroud)
如果脚本位于PATH变量中显示的目录中,则只需键入即可
$ script1.py
Run Code Online (Sandbox Code Playgroud)
否则,您需要提供完整路径(绝对路径或相对路径).这包括当前的工作目录,该目录不应该在您的目录中PATH.
$ ./script1.py
Run Code Online (Sandbox Code Playgroud)