私は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
そのインポート スキームが壊れます。
なしでこれを行うにはどうすればよいですか:
- インストールする
- システムパスの操作