2010-12-12 14 views

答えて

10

、彼らはまた、パッケージディレクトリを指す__path__を持っている:あなたがオブジェクト、使用を「検査」したい場合は

。したがって、hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__を使用することができます。

(REPLでの)例:

import socket, SOAPpy # SOAPpy is a package 
socket.__file__ 
# .../python2.5/socket.pyc 
socket.__path__ 
# AttributeError: 'module' object has no attribute '__path__' 
SOAPpy.__file__ 
# .../2.5/site-packages/SOAPpy/__init__.pyc 
SOAPpy.__path__ 
# ['.../2.5/site-packages/SOAPpy'] 
+0

あなたは証拠を持っていますか?私はちょうど自分自身のパッケージでそれを試しました、 '__file__'はそこにあります(' package/__ init __。pyc')、それは "パッケージ"としてのimportは '__init__'と呼ばれるモジュールです。 ( 'package .__ path__ == ['package']') –

+0

@Chris更新、ありがとうございます。 – khachik

+0

機能についてはどうですか?そこにある場所も決めることができます(他のオプションは、それがインポートされているモジュールのパスをチェックし、その間にマングリングがないことを願っています)。 –

1
import module_name 
module_name.__file__ 
3

試行:module_name.__file__これは、パッケージが__init__.pyを指す__file__属性を持っていることを言及する価値があるinspect

0

あなたは場所を見つけるために、モジュールのファイル属性を使用することができます。

import sys print sys.__file__

関連する問題