为什么pip安装包的__init__.py没有规范if __name__ ==“__main __”:?

时间:2016-10-07 07:05:20

标签: python python-2.7 pycharm

我正在玩pelican,静态博客生成器,我有

现在我想运行它,并使用pycharm(稍后在emacs中)调试它

我无法弄明白该怎么做!

我可以从命令行运行pelican。

$ pelican /blog/content -o /blog/public -s /blog/pelicanconf.py --relative_urls

但我无法弄清楚如何从pycharm运行它....

也就是说,我可以在__init__.py:main()设置一个断点,但是当pycharm运行__init__.py时,没有任何反应。 据推测,pycharm运行__init__并加载各种模块然后退出。

直到我添加规范调用trope:

if __name__ == "__main__":
    main()

位于__init__.py

的底部

然后我可以告诉pycharm运行__init__.py脚本,python根据需要进入main()调试器。

(编辑)的 所以我的问题是

  1. 为什么python包在__init__.py
  2. 末尾没有该转义
  3. 如何配置pycharm以便我可以在其中运行和调试pelican(或类似的python包)?

1 个答案:

答案 0 :(得分:4)

pelican/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

因此,如果您想从PyCharm运行pelican,您可能只需运行main()

pelican/__init__.py函数

你可以通过以下方式做到:

  • 创建一个简单的脚本,只需导入并调用pelican.main()函数
  • 运行此脚本(在调试模式下进行调试)