简体   繁体   English

python:使用动态命名在项目中导入模块

[英]python: Importing modules in project using dynamic naming

My project layout looks like: 我的项目布局如下:

run.py
jobs/
   job1.py
   job2.py

job1.py is pretty basic: job1.py非常基本:

class job1():

    def __init__(self):
        print 'yo'

In run.py, I have: 在run.py中,我有:

name = 'job1'
classname = 'jobs.%s' % name
__import__(classname)

Which obviously does not work: 显然不起作用:

Traceback (most recent call last):
  File "run.py", line 5, in <module>
    __import__(classname)
ImportError: No module named jobs.job1

What is the best way to import the modules in this manner? 以这种方式导入模块的最佳方法是什么?

首先,在jobs.jobs1文件夹中创建一个__init__.py文件,以使jobs.jobs1正常工作。

Add this to your __init__.py in jobs directory 将此添加到jobs目录中的__init__.py

import os
jobs = {}
for module in (name for name in os.listdir(".") if name.endswith(".py")):
    jobs[module] = __import__(module)

Then just use it like this 然后像这样使用它

from jobs import jobs

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM