私の問題はさらに複雑でした:
同じ名前のファイルからglobal/site-packages
モジュールをインポートする
aero の pm リサイクラーに取り組んでいて、特にpip.commands.search.SearchCommand
ソース ファイル pip.py のアダプター クラス Pip から、pip API にアクセスしたかったのです。
この場合、変更しようとしても無駄です。完全に消去して、フォルダーを唯一のアイテムとして追加するsys.path
ことさえしましたが、うまくいきませんでした。sys.path
.../site-packages/pip...egg/
sys.path
私はまだ得ます:
print pip.__package__
# 'aero.adapters'
最終的にうまくいく2つのオプションを見つけました。それらはあなたにも同じようにうまくいくはずです:
__builtin__.__import__()
組み込み関数の使用
global_pip = __import__('pip.commands.search', {}, {}, ['SearchCommand'], -1)
SearchCommand = global_pip.SearchCommand
ただし、ドキュメントを読むと、代わりに次の方法を使用することをお勧めします。
conv ラッパーを使用importlib.import_module()
します。__import__
ドキュメントimport_module()
では、2.7 から 3.1 への移行を容易にするために、Python 3.1 の機能のマイナー サブセットであると説明しています。
from importlib import import_module
SearchCommand = import_module('pip.commands.search').SearchCommand
import_module()
あなたが私に尋ねると、間違いなくよりPythonicに感じますが、どちらのオプションも仕事を成し遂げます。
nJoy!