为了账号安全,请及时绑定邮箱和手机立即绑定

如何导入导入本地模块的远程模块?

如何导入导入本地模块的远程模块?

慕仙森 2022-05-19 15:38:24
我的程序使用importlib.这个导入的模块(我们称之为A)导入位于它旁边的一些其他自定义模块(我们称之为B)。My_Project\    │    └─── my_program.pySome_Other_Location\    │    ├─── A_module_my_program_wants_to_import.py    └─── B_module_A_imports.py当我导入A 而不导入B时,它工作得很好:# Sample from my_program.pypath = Some_Other_Location\A_module_my_program_wants_to_import.pyspec = importlib.util.spec_from_file_location("A", path)module = importlib.util.module_from_spec(spec)spec.loader.exec_module(module)但是,当在A我导入B:# Sample from A_module_my_program_wants_to_import.pyimport B_module_A_imports或者from B_module_A_imports import foo我运行我的程序,我得到:Build error: No module named 'B_module_A_imports'回溯到我在程序中导入的位置,以及我试过指定submodule_search_locations=Some_Other_Location,spec_from_file_location但没有帮助。所以问题是如何导入远程模块,即导入本地模块?
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

我找到了一种解决方法,但不是一个合适的解决方案。解决方法如下:


我已经意识到它正在尝试加载my_program 所在的 B 并且显然没有找到任何东西。但是,可以通过Some_Other_Location添加sys.path. 所以这就是 my_program 的导入部分的样子:


directory = Some_Other_Location

sys.path.append(directory)


path = Some_Other_Location\A_module_my_program_wants_to_import.py

spec = importlib.util.spec_from_file_location("A", path)

module = importlib.util.module_from_spec(spec)

spec.loader.exec_module(module)


sys.path.remove(directory)

这工作得很好,但是,我仍然愿意接受实际的解决方案!


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信