Util.pyとbar.pyを含むモジュールfooがあります。
IDLEまたはpythonセッションでインポートしたいのですが、どうすればいいですか?
現在のディレクトリまたはデフォルトのpython PATH。)にないモジュールをインポートする方法に関するドキュメントは見つかりませんでした。import "<full path>/foo/util.py"
およびfrom "<full path>" import util
を試した後
一番近いものは
import imp
imp.load_source('foo.util','C:/.../dir/dir2/foo')
これにより、Windows 7で許可が拒否されました。
1つの方法は、単に path を修正することです。
import sys
sys.path.append('C:/full/path')
from foo import util,bar
これには、fooがpythonパッケージである必要があることに注意してください。つまり、__init__.py
ファイル。変更したくない場合はsys.path
、 PYTHONPATH
環境変数も変更 または システムにモジュールをインストール 。これは他のディレクトリまたは.py
そのディレクトリ内のファイルが誤ってロードされる可能性があります。
したがって、 imp.load_source
代わりに。ディレクトリではなくファイル名が必要です(現在のユーザーが読み取りを許可されているファイルへ):
import imp
util = imp.load_source('util', 'C:/full/path/foo/util.py')
PYTHONPATH
環境変数を使用してモジュール検索パスをカスタマイズするか、sys.path
ディレクトリリスト。
モジュール検索パス python.orgのドキュメントを参照してください。
これを試してみてください
import sys
sys.path.append('c:/.../dir/dir2')
import foo
Phihagのヒントに続いて、この解決策があります。ソースファイルのパスをload_src
に渡すだけで、ロードされます。また、名前を指定する必要があるため、この名前を使用してこのモジュールをインポートできます。より明示的であるため、私はこの方法を好む:
def load_src(name, fpath):
import os, imp
return imp.load_source(name, os.path.join(os.path.dirname(__file__), fpath))
load_src("util", "../util.py")
import util
print util.method()
別の(それほど明確ではない)方法は次のとおりです。
util = load_src("util", "../util.py") # "import util" is implied here
print util.method() # works, util was imported by the previous line
編集:メソッドはより明確にするために書き直されます。