【问题标题】:Python - import module using variablePython - 使用变量导入模块
【发布时间】:2019-02-27 19:48:19
【问题描述】:

我的项目在以下结构中。

myapp/
    pack1/
        module1.py
        module1.py
     pack2/
        module3.py
        module4.py 
        .
        .
        moduleN.py
    foo.py
    bar.py

我想从 pack2 导入一个模块,我当前的工作文件是 pack1/module1.py。

pack2 会有很多模块,我需要使用变量来获取它们。

我尝试过exec('from pack2 import module3') 和module = importlib.import_module(self.pack2, package=None).。

我的代码,

class ParseData:
    def __init__(self, page_res, domain):
       self.page_response = page_res
       self.domain_ = domain

    def listing_details(self):
        import importlib
        module = importlib.import_module(self.domain_, package=None)
        from module import listing_page

我得到了错误,

    Traceback (most recent call last):
  File "D:/LRI/sample_parser.py", line 16, in <module>
    get_listing_data(js)
  File "D:/LRI/sample_parser.py", line 7, in get_listing_data
    webPage.listing_details()
  File "D:\LRI\geoScraper\parser_module.py", line 12, in listing_details
    from module import listing_page
ImportError: No module named 'module'

虽然这些似乎有效,但我找不到进一步访问导入模块的方法。

任何指导都可以帮助我。提前致谢。

【问题讨论】:

  • 你有什么错误吗?
  • @ManojKengudelu 更新了带有错误消息的问题。
  • 使用代码 sn-ps 更新您的任务
  • @EMKAY 已更新。
  • function = getattr(module, listing_page) 而不是 from module import listing_page

标签: python python-3.x dynamic module


【解决方案1】:

在总结了所有的回复和我的尝试之后,这对我来说终于奏效了。

domain = __import__(domain) 
func = getattr(domain, 'check')

我不得不更改文件结构,例如,

myapp/
    pack1/
        module1.py
        module1.py
    module3.py
    module4.py 
    .
    .
    moduleN.py
    foo.py
    bar.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2016-08-15
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多