因此,我具有以下文件夹结构;
Root/
--outlook/
----outlook.py
--test/
----test.py
outlook.py
包含一个名为Outlook
的类。
我正在尝试按以下方式在Outlook
文件中导入test.py
类-
from .outlook import Outlook
outlook = Outlook()
我从根文件夹中以-python test/test.py
这会导致错误-
Traceback (most recent call last):
File "test/test.py", line 1, in <module>
from .outlook.outlook import Outlook
ModuleNotFoundError: No module named '__main__.outlook'; '__main__' is not a package
请帮助。
答案 0 :(得分:1)
相对导入路径仅在从父模块中加载子模块时才有效:
from Root.test.test import some_function
如果要同时使用两个不同子模块中的组件并作为独立脚本,建议使用非相对导入路径:
from Root.outlook.outlook import Outlook
您需要将模块Root放在PYTHON_PATH环境变量包含的文件夹中
也不要忘记将 init .py添加到所有文件夹中
some_directory/
Root/
__init__.py
outlook/
__init__.py
outlook.py
test/
__init__.py
test.py
EDIT1:
根据您要从test.py内部导入的方式,您可以面对2种不同的情况
from Root.outlook.outlook import Outlook
将要求python可以访问“ Root”目录
PYTHON_PATH="...:...:/path_to_some_directory_that_contains_Root"
同时
from outlook.outlook import Outlook
需要
PYTHON_PATH="...:...:/path_to_Root"
...表示环境变量中已经存在的其他路径,您应保留原样。
“添加到PYTHON_PATH中”表示手动获得快速结果的方法。实际上,使用模块时,应该使用Root目录中带有disutils的'setup.py'脚本和命令来安装模块
python setup.py install
答案 1 :(得分:0)
您输入的错误。
from outlook.outlook import Outlook
Root/
--outlook/
----outlook.py
--test/
----test.py
在您的情况下,您正在Outlook文件夹中进行检查,因此您也必须指向该文件。