我正在使用python中的一个小宠物项目,我希望能够编写外部模块并动态导入它们。到目前为止,我有这样的事情:
def getModules(self):
os.chdir(moduleDir)
for module in os.listdir():
#code goes here to import
#also append to a list for use later on
我使用import module
,但这只会产生语法错误。
答案 0 :(得分:3)
您可以像这样使用importlib.import_module()
:
a
示例:强>
假设我们有一个包含以下函数的模块def fn():
print("Hello World")
:
>>> import importlib
>>>
>>> my_module = importlib.import_module('a') # Note: 'a' without '.py'
>>>
>>> my_module.fn()
Hello World
以下是结果:
public class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
答案 1 :(得分:2)
您应该使用__import__
功能。这样的事情会有所帮助,
def getModules(self):
modules = []
os.chdir(moduleDir)
for module in os.listdir('.'):
m = __import__(module.split('.')[0]) # Assuming your listdir() gives .py files
modules.append(m)
更好的选择是importlib.import_module()
,它是__import__
的包装。它的语法与__import__
类似。当然,您需要import importlib
。