在Python应用程序中,我可以区分入口点(脚本)和我认为的库代码。
我的本能反应是将库代码放入包中,而其他地方的脚本则从包中导入。
可以使用setup.py来引用包中用作入口点的方法,从而使包中包含所有的Python代码。
哪一种更好?
注意:此链接讨论了这两个选项,但并没有提供真正的意见。
编辑:为了给出一个更具体的例子,我正在复习一些包含一个包的代码。其中有40个模块:
__init__.py这并不是说它很好地使用了软件包的功能,但我不能指摘到底是什么错了。
我理解在同一个程序包中进行测试并不是我最初的问题。
发布于 2018-06-01 07:59:00
两年后,我觉得我可以回答我自己的问题。
最好使用Setuptools entry_points方法。这一点在单击文档中有很好的描述,其要点如下:
发布于 2016-01-28 22:33:29
是的,对于作为命令行工具和导入库的包来说,这是可能的,也是非常普遍的。
在setup.py中,添加模块的函数作为入口点:
setuptools.setup(
...
entry_points={'console_scripts': [
'foo = my_package.some_module:main_func',
]},
...
)创建一个名为foo的脚本,该脚本调用my_package.some_module中的my_func函数。在https://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation阅读更多内容。
增加以下内容也是一项公约:
#!/usr/bin/env python
...
if __name__ == '__main__':
my_func()对于可以作为“脚本”调用的模块,my_func是您希望外部调用的函数。
下面是setup.py的一个示例:
https://github.com/jacebrowning/gdm/blob/fa998167f5f6de64bc8bdfd8b9433870d79ef814/setup.py#L28-L31
和可调用模块:
发布于 2016-01-28 20:45:06
如果您想让其他包使用库代码,则需要将其与脚本分离。这是由于在setup.py和requirements.txt中声明依赖项的方式(参见这里)。
如果库代码仅与这些脚本一起使用,则可以选择。我会选择把它们放在一起让事情变得简单一些
https://softwareengineering.stackexchange.com/questions/308661
复制相似问题