gpt4 book ai didi

python - 我的项目根文件夹中没有名为 "xxx"的模块

转载 作者:行者123 更新时间:2023-12-05 06:41:47 25 4
gpt4 key购买 nike

我的项目是这样组织的:

ezrename/
├── base/
├── Images/
└── shell

ezrename、base 和 shell 文件夹中有空的 init.py 文件。图片只是一个资源文件夹,什么都没有。

我有一个名为 ezrename/base/colors.py 的模块文件,它实现了 Colors 类。

我有一个名为 ezrename/shell/baseshell.py 的模块,它实现了 BaseShell 类并导入了 Colors。

from ezrename.base import Colors

但是我得到以下错误:

Traceback (most recent call last):
File "/home/devaneando/Development/ezrename/shell/baseshell.py", line 6, in <module>
from ezrename.base import Colors
ImportError: No module named 'ezrename'

所以我决定试试

from ..base import Colors

得到

Traceback (most recent call last):
File "/home/devaneando/Development/ezrename/shell/baseshell.py", line 6, in <module>
from ..base import Colors
SystemError: Parent module '' not loaded, cannot perform relative import

我不知道我做错了什么。有人可以解释导入的工作原理以及我做错了什么吗?

最佳答案

按照pythonic的方式,我认为我的想法是错误的。您不能像我想的那样从两个模块导入,因为导入只有在模块本身未被导入时才有效,而我想做的事情是不可能的。

pythonic 方法是创建一个没有 init.py 文件的应用程序文件夹,在应用程序入口脚本中导入包,相关导入将起作用:

EzRename
└──ezrename/
├── base/
├── Images/
└── shell

在EzRename中,添加一个application.py:

import ezrename

如果您这样做,从 shell 和 base 中的类的相对导入将起作用。那是缺失的部分

关于python - 我的项目根文件夹中没有名为 "xxx"的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541295/

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