gpt4 book ai didi

当同一模块存在于 2 个位置时,python __import__() 从 2 个不同的目录导入

转载 作者:行者123 更新时间:2023-11-30 23:55:31 25 4
gpt4 key购买 nike

我有一个Python应用程序,它的目录结构是这样的。

-pythonapp
-mainpython.py
-module1
-submodule1
-file1.py
-file2.py

-submodule2
-file3.py
-file3.py

-submodule3
-file1.py
-file2.py
-file5.py
-file6.py
-file7.py

当我尝试在 submodule3 下导入 python 实用程序(来自 mainpython.py)时,我从 submodule1 中获取了最初的 2 个文件。(请注意,submodule1 和 3 有 2 个具有相同名称的不同文件)。然而,当不存在冲突时,相同的导入工作正常,即它正确地从 submodule3 导入文件 5,6,7。

这是代码:

name=os.path.splitext(os.path.split("module1\submodule3\file1.py")[1])[0] --> file1.py name here is passed dynamically. 

module = __import__(name)

//这里的名称就像“file1”,它可以工作(但是,当动态传递文件名时,会出现上述问题),但是如果我将完整的包传递为“module1.submodule1.file1”,那么它就可以了失败并出现 ImportError 错误,提示“没有名为 file1 的模块”

现在的问题是我们如何告诉解释器只使用“module1.submodule3.file2”下的那些?我正在使用Python

这真的很紧急,我已经用尽了所有的尝试。希望有经验的Python开发人员可以帮我解决这个问题吗?

最佳答案

尝试在目录外创建包,方法是在每个包中包含一个空的 __init__.py 文件,并且每当您想使用

从包中引用特定模块时
from submodule import mymodule

语法。创建包是将模块分离到不同 namespace 的好方法。并根据模块的功能命名模块,不要将它们命名为 file1、file2 等。

关于当同一模块存在于 2 个位置时,python __import__() 从 2 个不同的目录导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4601185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com