这个python代码如何工作?

时间:2015-09-17 13:25:15

标签: python

我刚开始在python中编写一些简单的脚本,因为我已经开始使用ubuntu作为我的默认操作系统。

所以我遇到了mpsyt(终端youtube播放器)的代码。我很惊讶编码是多么简单。谁能解释一下这里发生了什么?我并不认为一个看似复杂的程序如何能够拥有如此少量的代码....

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'mps-youtube==0.2.5','console_scripts','mpsyt'
 __requires__ = 'mps-youtube==0.2.5'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
sys.exit(
    load_entry_point('mps-youtube==0.2.5', 'console_scripts', 'mpsyt')()
)

2 个答案:

答案 0 :(得分:4)

这是一个自动生成的存根;它会在您mps-youtube中安装的site-packages包中执行一个入口点。 不是实际的脚本。

setuptools项目在bin目录中安装此类存根;它的任务是找到合适的项目版本并加载真正的脚本。

将有一个匹配的lib/python[version]/mps-youtube-0.2.5-py[version].egg-info目录,其中包含一个entry_points.txt文件,其中包含有关包的INI文件格式样式信息。 load_entry_point('mps-youtube==0.2.5', 'console_scripts', 'mpsyt')行会查找确切的文件,以便从mpsyt部分加载console_scripts定义。

[console_scripts]部分中,将有一个mpsyt条目,用于命名用于运行脚本的实际模块。根据{{​​3}}判断,看起来像这样:

[console_scripts]
mpsyt = mps_youtube:main.main

指向mps_youtube.main模块,其中将调用main()函数来执行实际工作;查找lib/python[version]/mps_youtube/main.py文件,然后搜索def main():函数定义。从Github您可以看到project setup.py file

答案 1 :(得分:0)

这不是整个计划。这只是运行程序的其余部分。