代码之家  ›  专栏  ›  技术社区  ›  GabiMe

python:动态导入模块内容

  •  3
  • GabiMe  · 技术社区  · 14 年前

    我有很多

    from myproject.settings import param1
    from myproject.settings import ...
    

    分散在我的项目中。

    启动后,我想根据env var加载不同的“设置”模块(例如 export SETTINGS=myproject.settings2)

    我试着把 myproject.__init__.py 有点像

    module_name =  os.environ['SETTINGS']
    m=__import__(module_name)
    settings = m
    

    但它不起作用。

    from myproject.settings import *
    ImportError: No module named settings
    

    如何实现这一目标?

    4 回复  |  直到 6 年前
        1
  •  1
  •   jonesy    14 年前

    mymodule = __import__(mod, fromlist=['a'])

        2
  •  0
  •   leoluk    14 年前
    settings = __import__(os.environ['SETTINGS'])
    

        3
  •  0
  •   Srikar Appalaraju Tonetel    14 年前

    myproject.settings PYTHONPATH

    PYTHONPATH=$PYTHONPATH:$HOME/myproject/settings/ export PYTHONPATH

    import settings myproject/settings

        4
  •  0
  •   Diego Garcia    6 年前

    src/
     app.py
     settings/
       __init__.py
       production.py
       sandbox.py
    

    settings.__init__.py

    import os    
    settings_module = os.environ.get('APP_SETTINGS')
    if not settings_module:
        from .sandbox import *
    else:
        exec('from {} import *'.format(settings_module))