Python打包:迎合不同的受众
我正在开发一个Python包,它由一个库模块和两个使用库的脚本组成。其中一个脚本是打印文本的命令行工具,另一个脚本是JSON API服务器。这两个脚本还可以作为希望使用该库的开发人员的示例 在这种情况下,我看到包的三个主要受众或用例:Python打包:迎合不同的受众,python,packaging,setuptools,software-distribution,Python,Packaging,Setuptools,Software Distribution,我正在开发一个Python包,它由一个库模块和两个使用库的脚本组成。其中一个脚本是打印文本的命令行工具,另一个脚本是JSON API服务器。这两个脚本还可以作为希望使用该库的开发人员的示例 在这种情况下,我看到包的三个主要受众或用例: 库用户:需要主模块。可能希望访问用于测试模块的脚本,并将其作为自己代码的存根和示例 CLI用户:希望不时运行CLI脚本。不需要API服务器,并且可能不关心对脚本源的访问 API提供程序:与CLI用户相同,但使用API服务器脚本。可能需要CLI脚本进行快速测试 理想
main_folder
README
setup.py
mypackage
__init__.py # contains the library functions
mymodule.py # link to __init__.py for easy import in the scripts
cli.py
api_server.py
[...]
requires=['pyswisseph', 'numpy'],
extras_require={'Flask':['flask']},
entry_points={
'console_scripts':
['cerridwen = cerridwen.cli:main',
'cerridwen-server = cerridwen.api_server:main [Flask]']
}
[...]
这就是我现在所做的
我浏览了PyPI,寻找类似的软件包,然后查看了的目录结构及其特性
在那里我发现了入口点
参数,该参数允许指定在构建时转换为脚本的模块函数。这些脚本还可能具有额外的依赖项
为了处理这个问题,我将相应的\uuuuuuu主块
块转换为命名函数,并将它们标记为入口点。相关块(所有setuptools.setup()
parameters)如下所示:
main_folder
README
setup.py
mypackage
__init__.py # contains the library functions
mymodule.py # link to __init__.py for easy import in the scripts
cli.py
api_server.py
[...]
requires=['pyswisseph', 'numpy'],
extras_require={'Flask':['flask']},
entry_points={
'console_scripts':
['cerridwen = cerridwen.cli:main',
'cerridwen-server = cerridwen.api_server:main [Flask]']
}
[...]
每个人都可以获得模块和脚本,但只有在第一次运行需要它们的脚本时,才会安装可选依赖项。脚本逻辑也将作为主模块的一部分安装,这样每个人都可以根据需要使用其助手功能
至于以脚本为例,我打算在项目的网站上引用它们的github源代码
目录结构保持其原始状态
我希望这能帮助其他人:)