【发布时间】:2022-01-17 02:02:09
【问题描述】:
我有一个使用以下示例语句导入的实用程序模块和类的包:
from MarixFramework.switcher import SwitchClient
当 MarixFramework 作为包安装时,上述语句可以正常工作。但是,我想对包内容进行一些本地测试,所以我想直接从具有以下结构的本地文件夹树中导入:
Workspace
MarixFramework
MarixFramework
eBlanketBot
-- project source files
如果我将Workspace\MarixFramework 添加到 sys.path,则会收到以下错误:
>>> sys.path: ['/home/pi/hd1/Projects/Workspace/MarixFramework', '', '/home/pi/hd1/Projects/Workspace/eBlanketBot', '/usr/share/eric/modules/DebugClients/Python', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/pi/.local/lib/python3.7/site-packages', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages']
Exception "ImportError"
cannot import name 'SwitchClient' from 'MarixFramework.switcher' (/home/pi/hd1/Projects/Workspace/MarixFramework/MarixFramework/switcher.py)
File: /home/pi/hd1/Projects/Workspace/eBlanketBot/blanketClient.py, Line: 9
导入过程显然找到了所需的源文件,但无法从中导入。为什么?
我想要实现的是直接从文件夹树中导入 MarixFramework 模块。然后,当我的本地测试完成后,我可以将其重新构建并安装为一个包,而无需更改导入语句的语法。
【问题讨论】: