目录结构:

TestProject
ModuleFiles
__init__.py
Module1.py
Profile
__init__.py
main.py
test.py

在 main.py 文件中调用 Module1

from ModuleFiles import Module1

提示

ModuleNotFoundError: No module named \'ModuleFiles\'

在 test.py 中使用相同的方式调用,可以正常调用,请问这个是怎么回事?

1 个回答

0

ccutmis

iT邦高手 2 级 ‧ 2024-12-12 20:40:03

最佳解答

用绝对路径载入模组的方法提供您参考看看... 假设 testProject 目录路径为: "C:\\testProject"


Module1.py 内容 :

def hello_world():
    print(f"function : hello world!")

class ItHelp:
    def __init__ (self):
        self.uname="mis"
    def show_uname(self):
        print(f"class ItHelp : {self.uname}!")

main.py 内容 :

import sys
import importlib.util

def load_module_from_abs_path(module_name,abs_path):
    spec = importlib.util.spec_from_file_location(module_name, abs_path)
    foo = importlib.util.module_from_spec(spec)
    sys.modules[module_name] = foo
    spec.loader.exec_module(foo)
    return foo

if __name__ == \'__main__\':
    x=load_module_from_abs_path("*","C:\\\\testProject\\\\ModuleFiles\\\\Module1.py")
    x.hello_world()
    y=x.ItHelp()
    y.show_uname()

执行结果 :

C:\\testProject\\Profile>main.py
function : hello world!
class ItHelp : mis!