56

util.pyとbar.pyを含むモジュールfooがあります。

IDLEまたはPythonセッションでインポートしたい。どうすればこれを行うことができますか?

現在のディレクトリまたはデフォルトのPythonPATHにないモジュールをインポートする方法に関するドキュメントが見つかりませんでした。試した後import "<full path>/foo/util.py"from "<full path>" import util

私が得ることができた最も近いものは

import imp
imp.load_source('foo.util','C:/.../dir/dir2/foo')

これにより、Windows7で許可が拒否されました。

4

4 に答える 4

77

1 つの方法は、単純にパスを修正することです。

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')
于 2012-04-15T11:32:32.443 に答える
5

環境変数を使用してモジュール検索パスをカスタマイズするか、ディレクトリリストPYTHONPATHを手動で変更できます。sys.path

python.orgのモジュール検索パスのドキュメントを参照してください。

于 2012-04-15T11:26:29.163 に答える
2

これを試してみてください

import sys
sys.path.append('c:/.../dir/dir2')
import foo
于 2012-04-15T11:29:09.993 に答える
2

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

編集:より明確にするためにメソッドを書き直しました。

于 2014-01-01T16:27:58.497 に答える