使用命名空间时如何导入函数?

时间:2019-05-24 08:48:59

标签: python-2.7 import namespaces

我正在尝试导入一个函数。文件夹/文件的名称空间由工作目录中的文件占用。我正在尝试找到一种可以导入此内容的方法:

  • 不更改任何名称
  • 仅将功能导入工作文件中

(下面的package_1package_2是源文件夹)

package_1\
    foo\
        __init__.py
        bar.py (myfunc, myfunc2 in this file)

package_2\
    subpackage_2\
        __init__.py
        foo.py
        bar.py
        hoo.py

我希望将myfuncmyfunc2导入到hoo.py中 我通常会做的:

from foo.bar import myfunc, myfunc2

无论如何,foo已经被使用(也是bar,但我认为这没什么大不了的)

我尝试过的解决方案:

我可以通过导入__init__.py中的subpackage_2然后重新导入来使它起作用:

__init__.py

from foo.bar import myfunc, myfunc2

hoo.py

from subpackage_2 import myfunc, myfunc2

但是我不想导入整个子包

尝试但未成功:

我一直在尝试从package_2中暂时删除sys.path然后导入,然后再添加package_2。我真的找不到正确的方法这个。

1 个答案:

答案 0 :(得分:0)

我想我已经找到了答案(或者至少是可行的)。尽管有更好的一个,我很想知道。

bar = __import__('foo.bar') # I did initially use from_list but looks like I don't need it
myfunc, myfunc2 = bar.myfunc, bar.myfunc2