即使param是abs路径,Importlib.import_module也不会导入模块

时间:2016-11-08 07:28:05

标签: python import module

我的.py模块位于C:\Python_Projects\MyModules\,名称为button_generator.py

我的代码是这样的:

module_path='C:\\Python_Projects\\MyModules'
module_name='button_generator.py'
sys.path.append(module_path)
try:
   limp=importlib.import_module(module_name.split('.')[0])
except:
   print 'module import error'

我也试过其他版本:

  • importlib.import_module(module_name),没有拆分
  • importlib.import_module( 'C:\ Python_Projects \ MyModules \ button_generator.py')
  • importlib.import_module( 'C:\ Python_Projects \ MyModules \ button_generator')

我在sys.path中的文件夹C:\Python_Projects\MyModules正在调试期间检查。

为什么模块不会导入?

2 个答案:

答案 0 :(得分:1)

我建议您重新排序项目目录,避免调用当前目录项目中没有的其他模块。你会避免这些错误。

例如,让我们组织我们的项目目录和文件夹,如下所示:

MyProjectFolder/
├── main.py
└── modules
    ├── __init__.py
    └── MyLib.py

NB:不要忘记添加一个名为__init__.py的空文件

MyLib.py:

#!/usr/bin/python3

class MyLib:
    def __init__(self):
        self.say_hello = "Hello i'm in modules/MyLib"

    def print_say_hello(self):
        print(self.say_hello)

<强> main.py:

#!/usr/bin/python3

# from folder.file import class
from modules.MyLib import MyLib

class MainClass:
    def __init__(self):
        my_lib = MyLib()           # load MyLib class
        my_lib.print_say_hello()   # access to MyLib methods

### Test
if __name__ == '__main__':
    app = MainClass()

在我运行的终端中:

$ python3 main.py 

输出

Hello i'm in modules/MyLib

所以我们已成功将modules/MyLib.py中的课程导入我们的main.py文件。

答案 1 :(得分:1)

我发现了错误:

通过打印它的args来处理ImportError异常后,我注意到button_generator.py有一个无法解析的导入。基本上,无法导入button_generator.py,因为导入错误。