2012-03-02 13 views
4

モジュール名からモジュールパスを取得する簡単な方法はありますか?私。私はpath/to/moduleをpath.to.moduleからpython 2.7で取得することをお勧めします。モジュール名からパスを取得する

私はモジュールをインポートするつもりはなく、私はモジュール名を文字列として持っています。

+0

はこのポスト/答えあなたの質問に対処していますか? http://stackoverflow.com/questions/247770/retrieving-python-module-path –

+1

モジュールをインポートするつもりはありません。このようにポストは役に立たず、前に読んだことがある。 – joidegn

答えて

6

sys.modules['path.to.module'].__file__

Python 2.7.2+ (default, Oct 4 2011, 20:06:09) 
[GCC 4.6.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import collections 
>>> import sys 
>>> sys.modules['collections'].__file__ 
'/usr/lib/python2.7/collections.pyc' 
>>> 
+0

とにかく現在の名前空間にモジュールをインポートする場合、 'sys.modules'を使うのはなぜですか?単に「コレクション」が行います。 –

+0

@SvenMarnach、あなたは正しいですが、モジュールオブジェクトへの参照ではなく、モジュールパスを持っています – warvariuc

+2

まあ、OPは、モジュールをまったくインポートするべきではないことを明らかにしていますので、 'sys.modules ['collections' __file__'や 'collections .__ file__'は役に立ちません。 –

1
path = path.to.module.__file__ 
9

これは、モジュールのインポート後に非常に簡単です:私のマシン上

import os 
print os.__file__ 

プリント

/usr/lib/python2.7/os.pyc 

を。モジュールをインポートする前にこのを行うには

、あなたがimp.find_module()を使用することができます。

imp.find_module("os")[1] 
関連する問題