setup.py中的入口点

scr*_*die 2 python packages pip 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']
  }
)
Run Code Online (Sandbox Code Playgroud)

我能够点安装和东西。但是当我再安装软件包运行项目,我得到的init _.pyc'>有没有‘主’属性,
我只是想运行功能主要script.py,当我在包装盒上运行项目的命令。我究竟做错了什么 ?

Mar*_*ers 5

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

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

最佳实践是定义一个main()函数,并将其用作入口点:

def function1():
    print "hi"

def main():
    function1()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

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

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

  • 检查入口点;它应该是“project.script:function1”,*而不是*“project:function1”。 (2认同)