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
$ 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()
函数,然后运行创建的脚本应该可以做到这一点。