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