python-深度导入

python-深度导入,python,import,module,whoosh,Python,Import,Module,Whoosh,我正在做一个使用。我希望留下呼呼声的源头树,并能够从更高的层次导入 实际嗖嗖模块的位置为: project\libs\whoosh\src\whoosh 我希望以以下方式输入: import libs.whoosh import libs.whoosh.index etc. 通过放置一个导入下一个子目录的\uuu init\uu.py文件,将每个子目录转换为python模块非常简单 然而,问题是whoosh的\uuuuu init\uuuuuu.py没有公开它的任何子模块。因此,import

我正在做一个使用。我希望留下呼呼声的源头树,并能够从更高的层次导入

实际嗖嗖模块的位置为:

project\libs\whoosh\src\whoosh
我希望以以下方式输入:

import libs.whoosh
import libs.whoosh.index
etc.
通过放置一个导入下一个子目录的
\uuu init\uu.py
文件,将每个子目录转换为python模块非常简单

然而,问题是whoosh的
\uuuuu init\uuuuuu.py
没有公开它的任何子模块。因此,
import libs.whoosh.index
仅当whoosh在系统路径中时有效;这是一个限制,我不希望操纵系统路径,也不希望在站点包中安装whoosh

通常(当whoosh在系统路径上时),似乎whoosh的内部导入已完全命名;ie,来自
project\libs\whoosh\src\whoosh\index.py

from whoosh import __version__
from whoosh.legacy import toc_loaders
from whoosh.compat import pickle, string_type
from whoosh.fields import ensure_schema
遗留、兼容和字段都是索引的同级项。通过
whoosh\src\whoosh
链导入whoosh会破坏其导入方案

如果没有以下情况,我该如何处理:

  • 安装嗖嗖声
  • 操纵系统路径

您可以使用“将模块路径添加到PYTHONPATH环境变量”,可以是持久的,也可以是在运行代码之前

setenv PYTHONPATH $PYTHONPATH:project\libs\whoosh\src
也可以在代码中执行此操作:

sys.path.append('project\libs\whoosh\src')

如果您不想“操纵系统路径,也不想在站点包中安装whoosh”,那么请使用virtualenv。入侵软件包系统带来的麻烦比污染网站软件包更多,但我肯定想“入侵软件包系统”。我知道这一点,但这显然是我不想做的。然后你可以在你的项目中添加
whoosh\src\whoosh
作为whoosh,因此,您既不需要安装该模块,也不需要操纵系统路径。