我有一个Python脚本,我想知道如何让它可执行;换句话说,如何使用像bash这样的shell来运行它。
我知道第一件事就是坚持第一行#! /usr/bin/env python
但是我需要例如按特定顺序排列的功能(即顶部或底部的主要功能)。我还需要为我的python文件保留扩展名.py(我可以调用函数Dosomething
吗?)。
简而言之,您是否可以提供一个简单的指南,有人必须考虑的重点是使Python文件可执行?
答案 0 :(得分:4)
这就是我制作可执行脚本的方法。它不会考虑eggs
或类似的任何内容。这只是一个我希望能够执行的简单脚本。我假设你正在使用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())
现在,如果您正确设置了权限,则可以执行此脚本。
要实现的一件事是,处理脚本时每行都在解释器中执行。无论处理器如何“获得它”,都是如此。那就是将脚本作为模块导入并将其作为脚本执行,基本上两者都是相同的,因为它们都执行模块的每一行。
一旦您意识到您的脚本只是在运行时执行,您就会意识到函数的顺序无关紧要。函数声明是函数声明。当你 调用 重要的功能时。
因此,通常,脚本的布局如下所示
def func1():
pass
def func2():
pass
def main():
return 0
if __name__ == '__main__':
sys.exit(main())
您首先创建要使用的功能,然后使用它们。希望它有所帮助。
答案 1 :(得分:0)
唯一的(就像你说的那样)包括:
#! /bin/env python
在第一行。甚至不是强制性的,但建议使用。 在那之后,你可以称之为写作:
python [filename].py
在终端或bash文件中。
答案 2 :(得分:0)
你还必须赋予它执行权:
chmod u+x yourfile.py
答案 3 :(得分:0)
删除第一个空格。也就是说,
#!/usr/bin/env python
应该是您文件的第一行。然后,确保使用以下命令将文件的permisions设置为可执行:
chmod u+x your_script.py
Python脚本按顺序执行。如果你有一个充满函数的文件,通常的做法就是在文件的最后有一些看起来像这样的东西:
if __name__ == '__main__':
main()
main()开始执行脚本。我们这样做的原因,而不是对main()的裸调用,这使得你可以让你的脚本像一个模块一样没有任何修改;如果你只有一行调用main(),你的模块将执行脚本的main。 if语句只是检查你的脚本是否在__main__命名空间中运行,即它是作为脚本运行的。
答案 4 :(得分:0)
您需要按照描述添加 sha bang ,例如
#!/usr/bin/python
或
#!/usr/bin/env python
作为文件中的第一行,您需要通过运行
使其可执行chmod +x Dosomething
您无需执行任何其他操作,特别是文件名可能包括Dosomething
。您的PATH
可能不包含文件所在的目录,因此您应该像这样运行它(假设您当前的工作目录是文件所在的位置):
./Dosomething
答案 5 :(得分:0)
您的代码应遵循模板
# 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扩展名,那么它仍然可以从命令行运行......但不能被其他模块导入。
答案 6 :(得分:0)
#!/usr/bin/python
放在第一行myPythonScript
(不,您不需要保留.py扩展名)chmod +x myPythonScript
./myPythonScript
示例:myPythonScript
#!/usr/bin/python
print "hello, world!"