簡體   English   中英

在python中具有多個子目錄的運行時導入

[英]Runtime import with with multiple subdirectories in python

在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!

我正在尋找執行此導入的最佳方法

從輸出中,我可以看到每個子目錄中已經有__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

最后,您還可以在one/__init__.py定義__all__ ,並在執行import one時自動執行此自動import one

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM