python-3.x 从外部文件夹调用时,同一文件夹的模块导入显示未找到

6psbrbz9  于 2023-03-04  发布在  Python
关注(0)|答案(3)|浏览(155)

文件布局如下所示

.
├── modules/
│   ├── module1.py
│   └── module2.py
└── main.py

模块2.py

print('hello world')

模块1.py

import module2

运行module1.py时,输出如下所示

"hello world"

主文件夹.py

from modules import module1

运行main.py时,输出如下所示:

Traceback (most recent call last):

    File "C:\Users\demar\Desktop\A\main.py", line 1, in <module>

        from modules import module1

    File "C:\Users\demar\Desktop\A\modules\module1.py", line 1, in <module>

        import module2

ModuleNotFoundError: No module named 'module2'
nwsw7zdq

nwsw7zdq1#

当你在main.py目录中时,Python会自动将这个目录添加到sys.path(这是它查找模块和包的地方)。
所以Python可以识别modules(名称空间)包和main.py,这就是为什么运行from modules import module1部分时没有出现任何错误,这也是因为它们的目录在sys.path
错误来自于当它尝试执行module1时,它看到import module2行。现在它无法识别module2

如何修复?

1.您可以将module2.py的目录modules/添加到sys.path或通过PYTHONPATH环境变量添加。
1.您可以更改module1.py并将其导入为:

from modules import module2
x4shl7ld

x4shl7ld2#

module1.py的正确代码:

from modules import module2

仅仅因为您main.py从父文件夹运行www.example.com

gpfsuwkq

gpfsuwkq3#

我发现如果我只写

try:
    import module2
except Exception:
    from . import module2

在单元1中
它从主模块和模块1工作

相关问题