如何使可执行文件在shell-Python中使用
我有一个Python脚本,我想知道如何使其可执行;换句话说,我如何使用类似于bash的shell来运行它 我知道第一件事就是坚持第一行/usr/bin/env python,但我是否需要将函数按特定顺序排列(例如,主函数在顶部或底部)。此外,我还需要保留python文件的扩展名.py(我可以调用函数如何使可执行文件在shell-Python中使用,python,shell,executable,Python,Shell,Executable,我有一个Python脚本,我想知道如何使其可执行;换句话说,我如何使用类似于bash的shell来运行它 我知道第一件事就是坚持第一行/usr/bin/env python,但我是否需要将函数按特定顺序排列(例如,主函数在顶部或底部)。此外,我还需要保留python文件的扩展名.py(我可以调用函数Dosomething?) 简而言之,您能否提供一个简单的指南,让Python文件可执行时必须考虑的要点?唯一的事情(就像您所说的)是包括: #! /bin/env python 在第一行。甚至不是
Dosomething
?)
简而言之,您能否提供一个简单的指南,让Python文件可执行时必须考虑的要点?唯一的事情(就像您所说的)是包括:
#! /bin/env python
在第一行。甚至不是强制性的,而是推荐的。
之后,你可以称之为写作:
python [filename].py
在终端或bash文件中。唯一的事情(如您所说)是包括:
#! /bin/env python
在第一行。甚至不是强制性的,而是推荐的。
之后,你可以称之为写作:
python [filename].py
在终端或bash文件中。您还必须授予它执行权限:
chmod u+x yourfile.py
您还必须授予it执行权限:
chmod u+x yourfile.py
删除第一个空格。就是
#!/usr/bin/env python
应该是文件的第一行。然后,确保使用以下选项将文件的权限设置为可执行:
chmod u+x your_script.py
Python脚本按顺序执行。如果您有一个充满函数的文件,通常的做法是在文件的末尾有如下内容:
if __name__ == '__main__':
main()
main()开始执行脚本。我们之所以这样做,而不是简单地调用main(),是因为这样可以使脚本像模块一样运行,而无需任何修改;如果只有一行名为main(),则模块将执行脚本的main。if语句只检查脚本是否在_umain_uu名称空间中运行,即它作为脚本运行。删除第一个空格。就是
#!/usr/bin/env python
应该是文件的第一行。然后,确保使用以下选项将文件的权限设置为可执行:
chmod u+x your_script.py
Python脚本按顺序执行。如果您有一个充满函数的文件,通常的做法是在文件的末尾有如下内容:
if __name__ == '__main__':
main()
main()开始执行脚本。我们之所以这样做,而不是简单地调用main(),是因为这样可以使脚本像模块一样运行,而无需任何修改;如果只有一行名为main(),则模块将执行脚本的main。if语句只检查脚本是否在_umain_uu名称空间中运行,即它是作为脚本运行的。您需要按照描述添加sha bang,例如
#!/usr/bin/python
或
作为文件的第一行,您需要通过运行
chmod +x Dosomething
您不需要执行任何其他操作,特别是文件名可以是任何内容,包括Dosomething
。您的路径
可能不包括文件所在的目录,因此您应该这样运行它(假设您当前的工作目录是文件所在的目录):
如您所述,您需要添加sha bang,例如
#!/usr/bin/python
或
作为文件的第一行,您需要通过运行
chmod +x Dosomething
您不需要执行任何其他操作,特别是文件名可以是任何内容,包括Dosomething
。您的路径
可能不包括文件所在的目录,因此您应该这样运行它(假设您当前的工作目录是文件所在的目录):
您的代码应该遵循模板
# any functions I want to define, and will be accessible when imported as module
# or run from command line
...
if __name__ == '__main__':
# things I want to do only when I run it from the command line
...
如果您希望能够运行它而不必使用python fileName.py
,而只需使用/fileName.py
,那么您将需要创建文件的第一行
#!/usr/bin/env python
以及使该文件至少可由用户执行
chmod u+x fileName.py
如果您不向文件添加.py扩展名,那么它仍然可以从命令行运行。。。但其他模块不可导入。您的代码应遵循模板
# any functions I want to define, and will be accessible when imported as module
# or run from command line
...
if __name__ == '__main__':
# things I want to do only when I run it from the command line
...
如果您希望能够运行它而不必使用python fileName.py
,而只需使用/fileName.py
,那么您将需要创建文件的第一行
#!/usr/bin/env python
以及使该文件至少可由用户执行
chmod u+x fileName.py
如果您不向文件添加.py扩展名,那么它仍然可以从命令行运行。。。但不可由其他模块导入
#/第一行中的usr/bin/python
myPythonScript
(不,您不需要保留.py扩展名)chmod+x myPythonScript
/myPythonScript
#!/usr/bin/python
print "hello, world!"
#/第一行中的usr/bin/python
myPythonScript
(不,您不需要保留.py扩展名)chmod+x myPythonScript
/myPythonScript
#!/usr/bin/python
print "hello, world!"
这就是我制作可执行脚本的方法。它不考虑鸡蛋或类似的东西。这只是一个我希望能够执行的简单脚本。我假设您正在使用linux
#! /usr/bin/env python
import sys
def main():
#
# Do something ... Whatever processing you need to do, make it happen here.
# Don't shove everything into main, break it up into testable functions!
#
# Whatever this function returns, is what the exit code of the interpreter,
# i.e. your script, will be. Because main is called by sys.exit(), it will
# behave differently depending on what you return.
#
# So, if you return None, 0 is returned. If you return integer, that
# return code is used. Anything else is printed to the console and 1 (error)
# is returned.
#
if an_error_occurred:
return 'I\'m returning a string, it will be printed and 1 returned'
# Otherwise 0, success is returned.
return 0
# This is true if the script is run by the interpreter, not imported by another
# module.
if __name__ == '__main__':
# main should return 0 for success, something else (usually 1) for error.
sys.exit(main())
现在,如果权限设置正确,就可以执行此脚本
要实现的一件事是,在处理脚本时,每一行都会在解释器中执行。不管处理器如何“获取”,这都是事实。也就是说,将脚本作为模块导入和作为脚本执行两者的工作原理基本相同,因为它们都执行模块的每一行
一旦您意识到脚本只是在运行时执行,您就会意识到函数的顺序并不重要。函数声明就是函数声明。当你调用重要的函数时