这是用户从 shell 执行的 pelican 可执行脚本?

which is pelican executable script that user executes from shell?

我试图通过子进程调用 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')()
)

虽然我期待看到当有人将参数从 shell 传递给 pelican 时调用 main 函数的调用。(我不是在谈论 pelican-quickstart

我试图查看 pelican 项目,我认为它是具有主要功能的 __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命令的入口点是pelican模块中的main()函数;您也可以通过 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