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

我能够 pip install 和东西。但是当我在安装包后运行项目时,我得到init _.pyc'> has no 'main' 属性
我只想在我在盒子上运行项目命令时运行 script.py 的 main 中的函数。我究竟做错了什么 ?

4

2 回答 2

7

您的主项目包确实没有main属性。意思是:从模块project:main导入,而你在.mainproject__init__.py

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

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

def function1():
    print "hi"

def main():
    function1()

if __name__ == '__main__':
    main()

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

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

于 2013-10-03T22:17:37.863 回答
2
'console_scripts': [ 'project=project.module:main']
于 2013-10-03T23:39:14.547 回答