我想弄清楚如何让模块独立行动(如CLI)和另一个模块(作为API)的子模块。
最小例子:http://www.filedropper.com/submoduleconfusion-master
对于文件结构:
假设有一些函数位于SubmoduleConfusion.mod_a.mod_a
,那么我会使用from mod_a.mod_a import f
因为mod_a也可以作为它自己的独立模块运行,
对于文件结构:
from mod_a import f
答案 0 :(得分:0)
最好的办法是使模块pip可安装(在模块路径的1步之外添加setup.py),并带有控制台脚本的入口点。
https://github.com/jtara1/misc_scripts/tree/master/misc_scripts/templates
我在我创建的大多数模块中都使用了这个模板setup.py和setup.cfg。它使用setuptools_scm,它将使用git中的版本(标签)为项目定义setup.py中的版本。
换句话说,在尝试安装模块或上传模块之前,您需要git tag 0.1.0
和git push --tags
。
我的setup.py还会推断模块的名称与父目录的名称相同(github项目名称)
所以目录应该看起来像这样
my_module
当前在setup.py中的setup函数中定义的别名,可能会稍后将其移动到变量
https://github.com/jtara1/misc_scripts/blob/master/misc_scripts/templates/setup.py#L113