在我的项目的根文件夹命名为“XXX”
我的项目中没有任何模块的组织是这样的:在我的项目的根文件夹命名为“XXX”
ezrename/
├── base/
├── Images/
└── shell
有空瓶在ezrename,底座和外壳文件夹初始化 .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的方式,我认为我的想法是错误的。你不能像我想要的那样从两个模块导入,因为只有当模块本身没有导入时,导入才会起作用,做我想要的是不可能的。
的Python的方式将没有一个初始化创建一个应用程序文件夹 .py文件,在应用入口脚本导入的包和相关进口将工作:
EzRename
└──ezrename/
├── base/
├── Images/
└── shell
在EzRename,加application.py:
import ezrename
如果这样做,shell和base中的类的相对导入将起作用。这是缺少的一块
Python导入将努力形成你的项目的根,所以在模块的任何进口子目录应该因此,如果你从baseshell在ezrename /然后导入主模块运行到
相对进口。 PY应该是:
from base import colors
可以ezrename /碱添加到Python的路径,然后只需要导入颜色
如from ezrename/shell/baseshell.py
import os
import sys
shell_dir = os.path.dirname(os.path.realpath(__file__))
ezrename_dir = os.path.dirname(shell_dir)
base_dir = os.path.join(ezrename_dir, "base")
sys.path.append(base_dir)
import Colors
谢谢你的回答。 –
在反引号中包含你的代码片段'将它们格式化 - 使读者更清楚。 – drjimmie1976
感谢您的提示,将尽。 – Jeroanan
谢谢你的回答。 –