Python 为什么pip会安装软件包';s_uuuinit_uuuuuuy.py没有规范if uuuu name uuuuuuu=="__主要内容:?

Python 为什么pip会安装软件包';s_uuuinit_uuuuuuy.py没有规范if uuuu name uuuuuuu=="__主要内容:?,python,python-2.7,pycharm,Python,Python 2.7,Pycharm,我正在玩静态博客生成器,我有 从github克隆 $git克隆 作为可编辑包安装到我的virtualenv中 $pip安装-r dev_requirements.txt $pip安装-e 现在,我想使用pycharm(稍后在emacs中)运行并调试它 我不太明白怎么做 我可以从命令行运行pelican $ pelican /blog/content -o /blog/public -s /blog/pelicanconf.py --relative_urls 但我不知道如何从pycharm

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

  • 从github克隆

    $git克隆

  • 作为可编辑包安装到我的virtualenv中

    $pip安装-r dev_requirements.txt
    $pip安装-e

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

我不太明白怎么做

我可以从命令行运行pelican

$ pelican /blog/content -o /blog/public -s /blog/pelicanconf.py --relative_urls
但我不知道如何从pycharm运行它

也就是说,我可以在
\uuuu init\uuuu.py:main()
处设置断点,但是当pycharm运行
\uuuuu init\uuuuuu.py
时,什么都不会发生。 大概pycharm运行
\uuuuu init\uuuu
,加载各个模块,然后退出

在我添加规范调用比喻之前:

if __name__ == "__main__":
    main()
\uuuu init\uuuuuuy.py的底部

然后我可以告诉pycharm运行
\uuuu init\uuuuu.py
脚本,python在main()处输入我想要的调试器


(编辑) 所以我的问题是

  • 为什么python包的
    \uuu init\uuuu.py
    末尾没有这样的比喻
  • 如何配置pycharm,以便在其中运行和调试pelican(或类似的python包)
  • 定义了几个入口点:

    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()

    因此,如果您想从PyCharm运行pelican,您可能只需要运行
    pelican/\uuuu init\uuuuuuuuuuuuuuuuy.py的
    main()
    函数即可

    您可以通过以下方式实现:

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

    不清楚您试图从pycharm或emacs运行什么
    pelican
    作为二进制程序安装。您可以始终使用
    pelican.main()
    在磁盘上查找文件
    pelican
    (Linux:
    哪个pelican
    )并在PyCharm中打开它-它是一个普通的python文件(没有扩展名)(可能您必须先创建项目并将文件添加到项目中,然后才能在PyCharm中运行它)为什么要这样做?它不需要作为脚本运行<代码>鹈鹕
    s入口点在its中定义,这将导致在安装期间在
    $prefix/bin
    目录中生成正确的启动脚本。将项目中的模块作为脚本运行通常会导致更多的问题,例如,将模块导入两次,一次作为
    \uuuu main\uuuuu
    导入,一次作为
    模块名称导入,将模块的基本路径添加到sys.path(只有包含包的目录应该位于路径上)…我发现文件
    pelican
    ,并且有来自pelican import main的
    main()
    所以
    \uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupelican/\uuuuu init\uuuupy.Yes的函数,但是怎么做?@Jerry:创建一个脚本,只调用
    pelican.main()
    函数,然后运行创建的脚本应该可以做到这一点。