我遇到了python命名空间包的问题,我想知道什么是好的解决方案。
我的项目结构类似于以下
project_name/ext/app_ext
这是我正在研究的项目。它的依赖项也在同一名称空间中。
project_name/ext/base_ext
project_name/ext/other_dependency
我正在研究django应用程序中的“app_ext”命名空间包。但是,我遇到了收到no module named app_ext
。
我认为它与如何安装依赖命名空间包(我正在使用PIP安装)有关。依赖命名空间包未随{/ 1}}文件一起安装,如distribute / setuptools文档中所述,但所有包都在其安装包中真正包含以下声明。
__init__.py
现在回答真正的问题。当已经安装了一些相关的命名空间包时,是否有使用命名空间包的技巧?
答案 0 :(得分:0)
一种解决方案是修改命名空间包的路径以添加本地路径。 (如果你在Django工作,你可以在settings.py中添加如下代码片段。)
from os import path
import sys
PACKAGE_NAMESPACE = ["project_name", "ext"]
VIRTUAL_PACKAGE = '.'.join(PACKAGE_NAMESPACE)
__import__(VIRTUAL_PACKAGE)
local_package = path.abspath(path.join(*PACKAGE_NAMESPACE))
sys.modules[VIRTUAL_PACKAGE].__dict__["__path__"].insert(0, local_package)
此方法也用于tiddlywebplugins命名空间的tiddlyweb项目。