Python Importlib.import_模块不会导入模块,即使参数是abs路径

Python Importlib.import_模块不会导入模块,即使参数是abs路径,python,import,module,Python,Import,Module,我的.py模块位于C:\Python\u Projects\MyModules\中,名为按钮\u 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

我的
.py
模块位于
C:\Python\u Projects\MyModules\
中,名为
按钮\u 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'
MyProjectFolder/
├── main.py
└── modules
    ├── __init__.py
    └── MyLib.py
我也尝试过其他版本:

  • importlib.import_模块(模块名称),不带拆分
  • importlib.import\u模块('C:\Python\u Projects\MyModules\button\u generator.py')
  • importlib.import\u模块('C:\Python\u Projects\MyModules\button\u generator')
我在调试期间检查时,文件夹
C:\Python\u Projects\MyModules
位于我的sys.path中


为什么模块不能导入

我建议您重新排列项目目录,避免调用当前目录项目中不存在的其他模块。您将避免此类错误

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

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'
MyProjectFolder/
├── main.py
└── modules
    ├── __init__.py
    └── MyLib.py
NB:别忘了添加一个名为
\uuuu init\uuuu.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)
Hello i'm in modules/MyLib
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 
在终端中运行时:

#!/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 
输出:

#!/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)
Hello i'm in modules/MyLib

因此,在这里,我们已经成功地将
modules/MyLib.py
中的类导入到我们的
main.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'
MyProjectFolder/
├── main.py
└── modules
    ├── __init__.py
    └── MyLib.py
NB:别忘了添加一个名为
\uuuu init\uuuu.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)
Hello i'm in modules/MyLib
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 
在终端中运行时:

#!/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 
输出:

#!/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)
Hello i'm in modules/MyLib
因此,我们已经成功地将
modules/MyLib.py
中的类导入到我们的
main.py
文件中。

我发现了错误:

在通过打印参数来处理ImportError异常之后,我注意到
button\u generator.py
有一个无法解析的导入。基本上,
按钮\u generator.py
无法导入,因为导入错误。

我发现错误:


在通过打印参数来处理ImportError异常之后,我注意到
button\u generator.py
有一个无法解析的导入。基本上,
button\u generator.py
无法导入,因为它的导入错误。

如果只执行
import button\u generator
?另外,如果您捕获异常而不是将其丢弃,它会说什么?如果您只是执行
import button\u generator
?如果你抓住了异常而不是扔掉它,它会说什么?对你来说太棒了!太好了!