setup.py中的入口点

时间:2013-10-03 22:10:34

标签: python pip packages entry-point

/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']
  }
)

我能够点击安装和东西。但是当我安装包后运行项目时, 我得 init _。pyc'>没有'主要'属性
我只想在盒子上运行project命令时在script.py的main中运行函数。我做错了什么?

2 个答案:

答案 0 :(得分:4)

您的主项目包确实没有main属性。 project:main表示:从main模块导入project,而__init__.py中没有此类对象。

您可能想要引用project.script:function1。该对象确实存在。

最佳做法是定义main()函数,并将其用作入口点:

def function1():
    print "hi"

def main():
    function1()

if __name__ == '__main__':
    main()

现在,您可以根据需要向main()添加更多内容。

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

答案 1 :(得分:2)

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