【问题标题】:Confusion with Python import与 Python 导入混淆
【发布时间】: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 模块。然后,当我的本地测试完成后,我可以将其重新构建并安装为一个包,而无需更改导入语句的语法。

【问题讨论】:

    标签: python import package


    【解决方案1】:

    好吧,我错了。似乎可以使用点语法进行相对导入。我的导入语句中有一个错误 - 试图从错误的源文件中导入一个类。呸! 如上例所示设置 sys.path 确实有效。呸!这简化了包测试。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多