【问题标题】:How to import a function when the namespace is used?使用命名空间时如何导入函数?
【发布时间】:2019-05-24 08:48:59
【问题描述】:

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

  • 不更改任何名称
  • 仅将函数导入到工作文件中

(下面的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,但我认为这并不重要)

我尝试过的解决方案:

我可以通过导入subpackage_2__init__.py 然后再次导入来实现此功能:

__init__.py:

from foo.bar import myfunc, myfunc2

hoo.py

from subpackage_2 import myfunc, myfunc2

但是我不想导入整个子包

尝试但未成功:

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

【问题讨论】:

    标签: python-2.7 import namespaces


    【解决方案1】:

    我想我已经找到了答案(或者至少它有效)。虽然如果有更好的我很想知道。

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

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 2010-12-19
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多