当两个文件夹同名时在Python中导入

问题描述 投票:0回答:2

我遇到了似乎不寻常的情况。

── folder1
     ├── run.py
     └── pgm.py

── folder2
      └── src
           ├── fileA.py
           └── fileB.py

── folder3
      └── src
           ├── file1.py
           └── file2.py

文件夹 1 是我的,文件夹 2 和 3 是分叉的,我不想更改它,而且我不确定是否可以将它们三个放在一个超文件夹中。

在 run.py 中,我有:

    sys.path.append(path_folder2)
    from src.fileA import classA

ClassA,调用 pgm.py 感谢:

     module = importlib.import_module('pgm')

pgm 尝试导入folder3.src 中的file1.py,它只导入folder3 的文件。将folder3 添加到路径会引发导入错误。我认为这是因为 python 在folder2的子文件夹src中查找,我怎样才能强制在folder3中查找?

事实上,我希望在同一执行过程中进入folder2环境,就好像文件夹3不存在一样,然后进入folder3环境,就好像文件夹2不存在一样。我怎样才能做到这一点 ?

注意: 为了便于阅读,我没有编写 init.py,但它们位于我的文件夹和子文件夹中 我尝试使用路径,在导入 file1.py 之前删除folder2,但没有成功。

python import
2个回答
1
投票

您可以在导入时重命名模块,如下所示:

from src.fileA import classA as fileAclassA
from src.fileB import classA as fileBclassA

0
投票

在较新版本的 Python 中,您可以跳过使用 __init__.py(名为“隐式名称空间包”的查找功能以了解更多详细信息)。这样做有一些缺点,但我相信从 src 目录中删除 __init__.py 将解决您的错误。

© www.soinside.com 2019 - 2024. All rights reserved.