2013-10-03 42 views
2
/project 
../project/script.py 
../project/__init__.py (This is a blank File) 
setup.py 
other files like README. 

#script.py 
def function1(): 
    print "hi" 

def main(): 
    function1() 

if __name__ == '__main__': 
    main() 


#setup.py 
setup(
name='project', 
version= __version__, 
long_description=markdown_contents, 
packages=['project'], 
entry_points={ 
    'console_scripts': [ 'project=project:main'] 
    } 
) 

我能够点到安装和东西。但是当我运行项目一旦包安装, 我得到初始化 _.pyc'>没有'main'属性
我只是想运行script.py的主要功能,当我运行项目命令框。我究竟做错了什么 ?setup.py中的入口点

回答

3

您的主要项目包确实没有main属性。 project:main表示从project模块导入main,并且__init__.py中没有这样的对象。

您可能想要参考project.script:function1来代替。该对象确实存在

最佳做法是定义一个main()功能,并用其作为切入点:

def function1(): 
    print "hi" 

def main(): 
    function1() 

if __name__ == '__main__': 
    main() 

现在,您可以根据需要main()增加更多。

请注意,当通过setuptools生成的脚本导入script模块时,__name__ == '__main__'测试将始终为false。该文件不是直接运行。

+0

如果我在if __name__ =='__main__'下有一个函数序列,我想按顺序执行它们?谢谢回复。 –

+0

@script_kiddie:'__main__'测试*不是*对象。定义一个单独的函数'main()'并调用它。 –

+0

仍然给__init __。pyc'>没有'main'属性 。检查更正的代码。 –

1
'console_scripts': [ 'project=project.project:main']