(我意识到在StackOverflow上有很多与python相关的导入相关的问题;我也怀疑我这样做是完全错误的;但是不管怎样,这里还是要说…)
我有一个python项目(mysubmod)组织如下:/__init__.py
/lib
- /__init__py
- /foobar.py
/models
- /__init__.py
- /hello.py
重要的是:/模型/你好.py进口lib.foobar库在
/模型/你好.py有一个运行一些测试的main块
然后我有了第二个项目(myproj),我将mysubmod作为git子模块导入其中;myproj现在组织如下-
^{pr2}$
其中:脚本/测试.py进口mysubmod.models.hello在
但是当我运行/脚本时/测试.py在命令行中,解释器现在抱怨mysubmod/models/你好.py再也找不到了lib.foobar库. 在
重新加载。在
更改了mysubmod/型号/你好.py所以现在它进口了。。lib.foobar库在
现在可以运行脚本了/测试.py毫无疑问,我不能再从命令行以文件的形式运行任何submod脚本;我只能使用python-m选项将它们作为模块运行。在
而且,我不能再单独运行submod项目文件,即使使用-m选项,因为解释器抱怨“试图在顶级包之外进行相对导入”;我必须进入目录级别,即只能从myproj根目录(其中mysubmod作为根目录)运行mysubmod。在
这一切似乎都不尽如人意。我希望能够:使用git子模块将mysubmod导入myproj,使其“正常工作”
继续能够独立开发mysubmod(即将脚本作为文件而不是模块运行)
有人对如何做到这一点有什么看法吗?对git子模块和python的最佳实践有什么看法?在
谢谢。在