1

我正在做一个使用whoosh的项目。我希望将 whoosh 的源代码树留在原地并能够从更高级别导入。

实际的 whoosh 模块的位置是:

project\libs\whoosh\src\whoosh

我希望导入为:

import libs.whoosh
import libs.whoosh.index
etc.

__init__.py通过放置一个导入下一个子目录的文件,将每个子目录转换为 python 模块非常简单。

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

通常(当 whoosh 在系统路径上时),似乎 whoosh 的内部导入已完全命名;即,来自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

legacy、compat 和 fields 都是索引的兄弟姐妹。通过一连串导入 whooshwhoosh\src\whoosh会破坏其导入方案。

如果没有:我该怎么做:

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

1 回答 1

0

您可以持久地或在运行代码之前使用将模块路径添加到 PYTHONPATH 环境变量。

setenv PYTHONPATH $PYTHONPATH:project\libs\whoosh\src

或者你可以在你的代码中这样做:

sys.path.append('project\libs\whoosh\src')
于 2013-11-13T07:40:10.817 回答