繁体   English   中英

作为命令执行python脚本

[英]Execute a python script as a command

我正在编写将放置在某个位置的python脚本。 我想像执行命令一样执行它。 对于前。

$ find_branch test

其中find_branch是放置在系统中任何位置的脚本。

我想知道如何实现这一目标。 我可以在脚本上使用chmod u + x在存在脚本的地方运行它,并从脚本中删除.py

sudo nano /usr/bin/testpyscript

然后在脚本中:

#!/usr/bin/python
print("I'm a python script")

给它x权限:

sudo chmod +x /usr/bin/testpyscript

现在,您可以将其用作常规命令:

bash-4.2$ testpyscript 
I'm a python script

它不必精确位于/usr/bin ,$ PATH内的任何位置都可以。 假设您希望它位于主目录内的某个文件夹中,则可以执行以下操作:

pwd
/home/brunorb

mkdir somedir
sudo mv /usr/bin/testpyscript somedir/

export PATH=$PATH:/home/brunorb/somedir/

testpyscript # from any folder in the system
I'm a python script

关于如何实现这一点,您有很多选择。

  1. 将放置脚本的位置添加到PATH环境变量中,例如,在~/.bashrc脚本中:

     export PATH="${PATH}:/folder/where/you/put/the/script" 
  2. 将脚本安装到路径上已经存在的位置。 它不必是/usr/bin类的系统文件夹。 许多默认的Bash设置都会在PATH包含~/bin

  3. 在命令行上提供脚本的完整路径:

     /folder/where/you/put/the/script/find_branch test 
  4. 通过Python运行脚本。 这与选项2非常相似:

     python /folder/where/you/put/the/script/find_branch test 
  5. 在您的环境中为脚本创建别名。 在bash中,您将在~/.bashrc执行以下操作:

     alias find_branch='/folder/where/you/put/the/script/find_branch' 

    要么

     alias find_branch='python /folder/where/you/put/the/script/find_branch' 

为了使选项#1,#2,#3和#5a正常工作,您应该使用带Python版本的shebang作为脚本的第一行。 根据您的环境设置方式,以下任何操作均可:

#!/usr/bin/python
#!/usr/bin/python2
#!/usr/bin/python3
#!/usr/bin/env python
#!/usr/bin/env python2
#!/usr/bin/env python3

最后,如果您不想这样做,则不必从脚本中删除.py扩展名。 例如,许多bash脚本都具有.sh扩展名,但这不会阻止它们按原样运行。 您只需在运行脚本时在脚本名称中包含扩展名即可。

确保已将python添加到您的路径中,并且#!/usr/bin/python位于脚本的顶部。

注意您可以尝试将脚本添加到/usr/local/bin/目录中并为其赋予适当的权限。

sudo cp <your script> /usr/local/bin/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM