我被要求将一个大项目拆分为一些可重用的库(包)。所以这个想法是这样做的:
- 公司-django-shared
- 公司-django-shared-dev
- 公司-python-共享
- 公司-python-shared-dev
这些可以通过 setuptools 和命名空间安装:
- 公司
- 公司.包名
- company.packagename.tests
- 公司.util
- ETC...
这一切都很好。我可以启动一个 shell 并执行我需要的任何导入。当我现在想在 django 项目中使用它时,问题就来了。我的设置在:
- company.foo.settings
此时,由于 setuptools 安装了一些包,当我尝试
$ ./manage.py 外壳
我得到错误::
ImportError:无法导入设置“company.foo.settings”(是否在 sys.path 上?):没有名为 foo.settings 的模块
我真的不知道如何在 django 应用程序中使用命名空间。如果我启动一个外壳并执行以下操作:
进口公司 公司.__路径__
找到了安装的路径,但没有找到当前目录。我错过了什么?
编辑
我想指出,问题是 Python 找不到任何包,company
因为 setuptools 安装的包定义company
为命名空间。
编辑 2
Django 只是对命名空间不满意。似乎没有可行的解决方案。