我有一个项目:
main
|---src.py
|---frame_select.py
|-----shellsdir
|---script_select.py
|------scriptsdir
|---test.py
Main有一个脚本,它将参数传递给frame_select.py
,然后根据传递的参数在shelldir
内查找相应的脚本。它返回并使用:
import imp, sys
sys.path.insert(0, '/path/to/shellsdir/')
def module_import(mod_name):
fp, p, d = imp.find_module(mod_name)
py_mod = imp.load_module(mod_name,
fp,
p,
d)
def pick(value, window):
if value == 'name_passed':
c_mod = module_import('specific_name')
c_mod.populate(window)
shellsdir
中大约有16个脚本,因此根据传递的参数选择在查看shellsdir
时要加载的脚本。在shellsdir
内是另一个名为scriptsdir
的目录和一个文件script_selector
。该文件如下所示:
import imp, sys
sys.path.insert(0, '/path/to/scriptsdir/')
def module_import(mod_name):
fp, p, d = imp.find_module(mod_name)
py_mod = imp.load_module(mod_name,
fp,
p,
d)
基本上只是重用代码,但现在我指向scriptsdir
程序将参数传递给module_import()
函数。但是,我没有得到ImportError: No module named 'name_passed'
。
我已完成print sys.path
,/path/to/shellsdir/
和/path/to/scriptsdir
都在那里。模块名称匹配,所以我不确定为什么会出错。
答案 0 :(得分:0)
for frame_select.py :
更新了src.py
文件的相对路径。
import imp, sys
sys.path.insert(0, './shellsdir')
def module_import(mod_name):
fp, p, d = imp.find_module(mod_name)
py_mod = imp.load_module(mod_name,
fp,
p,
d)
def pick(value, window):
if value == 'name_passed':
c_mod = module_import('specific_name')
c_mod.populate(window)
对于script_select.py , :
更新了src.py
文件的相对路径。
import imp, sys
sys.path.insert(0, './shellsdir/scriptsdir/')
def module_import(mod_name):
fp, p, d = imp.find_module(mod_name)
py_mod = imp.load_module(mod_name,
fp,
p,
d)
值得注意的是../scriptsdir/
不起作用。但是,我之前已经想到了这一点,但由于进口时间很长,我认为它没有用。忘了我在test.py
文件中有大约20个模块(用于测试)以及导致延迟的原因。