简单脚本
基本上,Python 模块中的代码只是运行。对于一个非常简单的程序,您可以创建一个 Python 文件 hi.py,其内容如下:
print('Hi ' + raw_input('What is your name?\n'))
这可以使用:
$ python hi.py
What is your name?
Remco
Hi Remco
使其可执行
在支持此功能的系统中,您可以添加 shebang 并使文件可执行。 hi.py 现在看起来像这样:
#!/usr/bin/env python
print('Hi ' + raw_input('What is your name?\n'))
然后从终端运行
$ chmod +x hi.py
$ ./hi.py
What is your name?
Remco
Hi Remco
__main__
您可能希望拆分逻辑,以便在其他模块中也可以使用它。在这种情况下,您不想运行模块中的所有代码。运行的主模块名为__main__。这通常用于一个简单的脚本。
hi.py:
#!/usr/bin/env python
def get_name():
return raw_input('What is your name?\n')
if __name__ == '__main__':
print('Hi ' + get_name())
bye.py:
#!/usr/bin/env python
import hi
if __name__ == '__main__':
print('Bye ' + hi.get_name())
入口点
这个项目现在变得严肃起来。它应该被正确打包,以便其他人可以分发和安装。为此,必须创建 setup.py。
该项目现在具有以下文件结构:
|- bye.py
|- hi.py
`- setup.py
入口点是函数,所以我们需要将主要功能放在函数中。让我们将这两个函数命名为main。
hi.py:
#!/usr/bin/env python
def get_name():
return raw_input('What is your name?\n')
def main():
print('Hi ' + get_name())
bye.py:
#!/usr/bin/env python
import hi
def main()
print('Bye ' + hi.get_name())
setup.py:
#!/usr/bin/env python
from setuptools import setup
setup(
name='greeter',
version='0.0.0',
py_modules=['hi', 'bye'],
entry_points={
'console_scripts': [
'hi = hi:main',
'bye = bye:main'
]
})
我不会详细介绍 python 打包。重点是entry points 指的是hi 和bye 模块的主要功能。同样可以指定'gui_scripts'。
以下步骤应在virtualenv 中使用。
现在可以通过运行安装包:
$ python setup.py install
您现在可以简单地从命令行访问主函数:
$ hi
What is your name?
Remco
Hi Remco
这通常是您在创建要分发的包时使用的。
scripts
另一种方法是在setup.py 中指定scripts。这允许像开始一样将 Python 脚本作为常规脚本运行。要实现这一点,只需从该文件中运行 main 函数并将其指定为 setup.py 中的脚本。
hi.py:
#!/usr/bin/env python
def get_name():
return raw_input('What is your name?\n')
def main():
print('Hi ' + get_name())
if __name__ == '__main__':
main()
bye.py:
#!/usr/bin/env python
进口喜
def main():
print('Bye ' + hi.get_name())
if __name__ == '__main__':
main()
setup.py:
#!/usr/bin/env python
from setuptools import setup
setup(
name='greeter',
version='0.0.0',
py_modules=['hi', 'bye'],
entry_points={
'console_scripts': [
'hi = hi:main',
'bye = bye:main'
]
},
scripts=['hi.py', 'bye.py'])
重新安装软件包。现在有 3 种方式运行 hi 和 bye:
直接调用文件:
$ python hi.py
从任何地方使用入口点:
$ hi
从任何地方使用setuptools scripts:
$ hi.py
请注意,scripts 也可能指非 Python 脚本。