嵌套Python程序包/ Django应用程序打包

时间:2018-08-20 02:29:25

标签: django python-3.x django-apps python-packaging

我有一个要在多个应用程序中使用的库。它由位于“ main”包中的一组抽象基类和一系列可重复使用的Django应用程序组成。

mylib-core中的文件:

  • mylib / __ init __。py
  • mylib / models.py
  • mylib / serializers.py
  • mylib / viewsets.py

mylib-auth中的文件:

  • mylib / auth / __ init __。py
  • mylib / auth / models.py
  • mylib / auth / serializers.py
  • mylib / auth / viewsets.py

这是两个要分别打包的库,其中mylib-auth依赖于mylib-coremylib-auth中的类是从mylib-core中的类派生的

我遇到的问题是,在为mylib-auth运行测试运行程序时,找不到mylib-core的文件。我已经将mylib-core软件包安装到mylib-auth的virtualenv中。

我认为这与我的嵌套包结构有关-在两个包中都有一个mylib文件夹。似乎python只在包含mylib子文件夹的父auth目录中寻找文件,而忽略venv/lib/.../mylib目录中的文件。

这会导致以下错误:

当我尝试为mylib-auth运行测试套件时,收到错误消息,因为mylib.auth没有属性mylib-尽管已安装,但找不到应用程序auth mylib-core进入我的virtualenv。在auth软件包的__init__.py目录下添加mylib可解决此问题(但显然不应该存在,因为此文件在我的核心软件包中定义)。此后,我得到ImportError: No module named 'mylib....'错误。

什么是测试和部署嵌套程序包的适当方法?

1 个答案:

答案 0 :(得分:0)

答案在文档中:pkgutil-style namespace packages

两个软件包都必须具有let DueDate = dateFormatter.string(from:dates!) 文件并具有以下内容:

mylib/__init__.py

一切都按预期进行。