0

Pythonでこのタイプのインポートを実行する最良の方法は何ですか?

one/ne_one/one_two/ にあるインポートするファイル」

フィールド名: two.py

def foo():
    print "venkatttt!"

メインファイル:main.py

s = __import__("one.one_one.one_two.two", fromlist=[])
function_class =  getattr(s,"one_one")
function_class1 =  getattr(function_class,"one_two")
function_class2 =  getattr(function_class1,"two")
print s
print function_class
print function_class1
print function_class2
function_class2.foo()

このコードの出力:

<module 'one' from '/opt/auto/src/ex/one/__init__.pyc'>
<module 'one.one_one' from '/opt/auto/src/ex/one/one_one/__init__.pyc'>
<module 'one.one_one.one_two' from '/opt/auto/src/ex/one/one_one/one_two/__init__.pyc'>
<module 'one.one_one.one_two.two' from '/opt/auto/src/ex/one/one_one/one_two/two.py'>
venkatttt!

このインポートを実行する最善の方法を探しています

4

1 に答える 1

0

__init__.py出力から、各サブディレクトリに既にファイルがあることがわかります。したがって、importそれらを単純化できます。

$> from one.one_one.one_two.two import foo
$> foo()

各モジュールのハンドルが必要な場合は、それらを個別にインポートできます。

$> import one.one_one as function_class
$> import one.one_one.one_two as function_class1
$> import one.one_one.one_two.two as function_class2

最後に、 を定義__all__して、実行one/__init__.py時にこの自動インポートを自動的に行うこともできますimport one

于 2012-07-17T11:53:20.017 に答える