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 はすべて索引付けする兄弟です。チェーンを介して whoosh をインポートすると、whoosh\src\whooshそのインポート スキームが壊れます。

なしでこれを行うにはどうすればよいですか:

  • インストールする
  • システムパスの操作
4

1 に答える 1