Pythonでモジュールのパス(保存場所)を取得する方法をわかりやすく解説
Pythonモジュールのパスを確認する基本の方法
純粋なPythonモジュール(.pyファイルとして提供されているモジュール)の場合、__file__ 属性を参照するだけで、そのソースファイルがどこに保存されているかを簡単に調べることができます。
具体的には、モジュールをインポートした後、module.__file__ を出力します。
>>> import mymodule
>>> mymodule.__file__
C:/Users/Ayush/mymodule.py
この例では、mymodule の実体が C:/Users/Ayush/mymodule.py にあることがわかります。絶対パスで表示したい場合は、次のように os.path.abspath() や os.path.realpath() を組み合わせると便利です。
>>> import os, mymodule
>>> os.path.abspath(mymodule.__file__)
'C:/Users/Ayush/mymodule.py'
C言語製の組み込みモジュールの場合の注意点
一方で、標準ライブラリに含まれる多くの組み込みモジュールはC言語で実装されています。このようなモジュールの場合、__file__ 属性は .so ファイル(共有ライブラリ)や .pyd ファイルを指すことになり、Pythonのソースコード自体は存在しないため、中身を直接読むことはできません。
また、環境によってはWindows上で __file__ 属性が存在しないケースもあるため、アクセスする際は以下のように属性の有無を確認しておくと安全です。
>>> import sys
>>> hasattr(sys, '__file__')
False
「python -v」オプションでインポート元を一覧表示する
「組み込みモジュールが実際にどこのファイルから読み込まれているのか知りたい」という場合は、コマンドラインからpython -vを実行するのが有効です。このオプションを付けると、起動時にどのモジュールがどこからインポートされたのかが詳細にログ出力されます。
$ python -v
# ...
import json # precompiled from /usr/lib/python3.x/json/__init__.pyc
# ...
デバッグ時や、意図しない同名モジュールを読み込んでいないか確認したいときにも役立つテクニックです。なお、Python 3.11以降では -X importtime オプションを使うことで、各モジュールのインポート元と所要時間をより見やすく確認することもできます。
-
Pythonオブジェクトのソースコードを取得する方法(inspect.getsourceの使い方)
Pythonでは、標準ライブラリのinspectモジュールに含まれるgetsource()メソッドを使うことで、関数やクラスなどのオブジェクトのソースコードを簡単に取得できます。inspect.getsource(object)getsource()メソッドの概要inspect.getsource()は、指定したオブジェクトのソースコードのテキストを返します。引数には以下のようなオブジェクトを指定できます。モジュールクラスメソッド関数トレースバック(traceback)フレーム(frame)コードオブジェクトソースコードは単一の文字列として返されます。なお、ソースコードを取得できない場合にはO
-
Pythonにパスを追加する方法|Windowsの環境変数設定でエラーを解消する手順
Pythonとは? Pythonは1991年に初めてリリースされたプログラミング言語です。WindowsやmacOS、Linuxなど複数のOSで動作し、開発者はさまざまな用途のコードを記述・開発できます。Web開発、データ分析、AI・機械学習など幅広い分野で活用されており、その柔軟性と充実したサポート体制から、世界で最も広く使われているプログラミング言語のひとつとなっています。 コマンドプロンプトでpythonが認識されない原因 コマンドプロンプトで「python」と入力してもエラーが返され、正しく動作させるには毎回フルパスを指定しなければならないことがあります。これは、コマンドプロンプトが