我试图通过子过程调用pelican进行自动博客发布,但是当我在shell中尝试which pelican并打开它时。我找到了这个

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'pelican==3.5.0','console_scripts','pelican'
__requires__ = 'pelican==3.5.0'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('pelican==3.5.0', 'console_scripts', 'pelican')()
)


当我希望看到对main函数的调用时,当有人将参数从shell传递给pelican时会被调用。(我不是在谈论pelican-quickstart

我试图研究鹈鹕项目,我认为它是具有主要功能的__init__.py,但是通常我会有一个可执行包装程序来调用该主要功能,因此任何人都可以将上述代码传递的参数重定向到哪个函数上用户?

最佳答案

pelican's setup.py

entry_points = {
    'console_scripts': [
        'pelican = pelican:main',
        'pelican-import = pelican.tools.pelican_import:main',
        'pelican-quickstart = pelican.tools.pelican_quickstart:main',
        'pelican-themes = pelican.tools.pelican_themes:main'
    ]
}


因此,pelican命令的入口点是main()模块中的pelican函数;您也可以通过import pelican; pelican.main()到达。 (类似地,对于pelican-quickstartimport pelican.tools.pelican_quickstart; pelican.tools.pelican_quickstart.main())。

查找文件:

import pelican
print pelican.__file__


...或者直接获取main函数的句柄:

>>> from pkg_resources import load_entry_point
>>> mainfunc = load_entry_point('pelican', 'console_scripts', 'pelican')
>>> print mainfunc.__module__
'pelican'
>>> mainfunc()
WARNING: Feeds generated without SITEURL set properly may not be valid

09-08 02:20