问题:在命令行中,如何在不在脚本名称前面输入“python”命令的情况下调用Python脚本?这是否可能?
信息:
我编写了一个方便的脚本来从命令行访问 SQLite 数据库,但我不太喜欢必须要输入“python SQLsap args”这样的命令,我更希望只需输入“SQLsap args”。我不知道这是否可能,但最好知道是否可以做到。这不仅适用于此程序。
问题:在命令行中,如何在不在脚本名称前面输入“python”命令的情况下调用Python脚本?这是否可能?
信息:
我编写了一个方便的脚本来从命令行访问 SQLite 数据库,但我不太喜欢必须要输入“python SQLsap args”这样的命令,我更希望只需输入“SQLsap args”。我不知道这是否可能,但最好知道是否可以做到。这不仅适用于此程序。
你可以在脚本的第一行加上一个shebang:
#!/usr/bin/env python
这会告诉您当前的Shell将命令馈送到脚本中。
#!/usr/bin/env python
和可执行权限,如果 Python 脚本出现错误会发生什么?在命令行中,我仍然需要在命令行开头提供 python
。 - Thomas Matthew#!/path/to/python
放在你的 Python 脚本的第一行。 #!
实际上是一个魔数,告诉操作系统将文件解释为指定程序的脚本。 你可以提供 /usr/bin/python
或者更具通用性的 /usr/bin/env python
,它调用 /usr/bin/env
程序并告诉它你想要使用系统安装的 Python 解释器。./SQLsap args
。假设这是在Unix系统上,您可以在文件顶部添加一个"shebang",如下所示:
#!/usr/bin/env python
然后像这样设置可执行标志:
chmod +x SQLsap
$ pip install package-name
,然后在任何目录下简单地运行$ package-name
就可以执行你的Python脚本了。$ pip install quickpackage
使用方法:
使用方法非常简单,只需运行quickpackage并输入Python脚本的路径。
例如:
❯ quickpackage
Enter name: quickpackage
Enter version: 1.1
Enter description: Instantly create and upload python package for your script
Enter github url: https://github.com/yask123/quick-package
enter author: Yask Srivastava
Enter email: yask123@gmail.com
Path of python script file: run.py
running register
....
running upload
Submitting dist/quickpackage-1.1.tar.gz to https://pypi.python.org/pypi
Server response (200): OK
现在只需运行$ quickpackage
(在这种情况下)即可执行您的脚本。
rem = ''' this line interpreted by BAT and PYTHON
@REM BAT-ONLY code begins now inside PYTHON comment
@echo off
python "%~dpnx0" %*
goto :eof
@REM CMD-ONLY code ends
'''
import sys
print sys.path
很遗憾,我不能消除输出中的第一行消息,但您可以始终更改'''后面的文本,使其成为应用程序名称之类的内容,这样人们就不会注意到。
理想情况下,您不会在.BAT文件中放置大量Python代码,而是会导入一个.py文件,然后运行它的.__main__
方法。
#!/usr/bin/env python
chmod +x arbitraryname
并将其放入您的PATH目录中(可以是符号链接):
cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname