如何从具有相同名称的不同模块加载不同的功能

我有以下结构


my_scripts

    group_A

        group_A1

            main.py

            dbFunctions.py

        group_A2

            main.py

            dbFunctions.py

    group_B

        scripting_Im_running_things_from.py

        dbFunctions.py

我想从每个main.pys 中加载一个函数,并尝试使用sys.path.append. 但是因为我从 (group_B) 运行我的主脚本的文件夹也有dbFunctions.py,所以其他两个模型的函数(即group_A1\main.py和group_A2\main.py)都不能利用它们各自dbFunctions.py模块中的函数,所以我得到一个导入错误:


ImportError: cannot import name 'my_function_in_groupA1_dbFunctions' from 'dbFunctions' (C:\my_scripts\group_B\dbFunctions.py)

(我还尝试重命名group_B\dbFunctions.py并group_B\_dbFunctions.py添加group_A1andgroup_A2 到 sys.path 确实允许我从我选择从第一个导入的任何一个group_A1's 和group_A2's导入函数main.py ,但是对于第二个,不可能让它看起来第二个文件夹;因为它已经从给定的 加载了一个函数main.py,似乎没有其他main.py> 可以考虑。)


是在所有文件夹中添加init.pys 还是可以通过使用来完成importlib?


很抱歉没有创建一个可重现的例子,我不能这样做我相信这个问题。


PIPIONE
浏览 119回答 1
1回答

泛舟湖上清波郎朗

使用相对导入。例如:# ../my_scripts/group_A/group_A1/main.py# Import foo from ../my_scripts/group_A/group_A1/dbFunctions.pyfrom .dbFunctions import foo# Import bar from ../my_scripts/group_A/group_A2/dbFunctions.pyfrom ..group_A2.dbFunctions import bar# Import baz from ../my_scripts/group_B/dbFunctions.pyfrom ...dbFunctions import baz
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python