[英]Runtime import with with multiple subdirectories in python
what is the best way to perform this type of import in python 在python中执行这种类型的导入的最佳方法是什么
file to be imported which is available in location one/ne_one/one_two/" 要导入的文件,该文件位于位置one / ne_one / one_two /“
fielname : two.py 文件名:two.py
def foo():
print "venkatttt!"
main file : main.py 主文件: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()
output of this code: 此代码的输出:
<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!
i am looking out for the best way to perform this import 我正在寻找执行此导入的最佳方法
From your output, I can see you already have __init__.py
files in each subdirectory, therefore, you can simply import
them: 从输出中,我可以看到每个子目录中已经有
__init__.py
文件,因此,您可以简单地import
它们:
$> from one.one_one.one_two.two import foo
$> foo()
If you want a handle for each module, you can import them separately: 如果需要每个模块的句柄,则可以分别导入它们:
$> 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
Finally, you can also define __all__
in one/__init__.py
and let this auto-imports happen automatically when import one
is executed. 最后,您还可以在
one/__init__.py
定义__all__
,并在执行import one
时自动执行此自动import one
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.