【问题标题】:Import Error in Eclipse when importing same name packages在 Eclipse 中导入同名包时出现导入错误
【发布时间】:2023-03-04 16:52:01
【问题描述】:

我在 Eclipse 中打开了一个 pydev 项目。

项目的包嵌套如下:

my-package:
    my-sub-package:
        foo

在这个项目中,我正在使用我创建的另一个项目的导入。 另一个项目的嵌套是:

my-package:
    my-sub-package:
        bar

所以两个主要的包有相同的名字。

尝试导入时: from my-package.my-sub-package import bar我得到ImportError: No module named bar

我猜这是因为 eclipse 在当前项目中搜索,当它没有找到 bar 时,它不会在 dist-utils 中寻找它(我 pip 安装了我试图导入的项目来自)。

(当尝试从从同一位置打开的常规 python 执行相同的导入时,导入工作非常好 - 所以它是 eclipse 中的东西)。

有没有办法告诉 eclipse 继续在 pythonpath 中的所有文件夹中搜索模块(这样它就可以到达 dist-utils),即使包具有相同的名称并且它没有在其中找到正确的包当前项目?

非常感谢。

【问题讨论】:

  • 在eclipse中查看python路径(import sys;sys.path),查看命令行中等效命令的结果是否有差异(激活virtualenv时..)

标签: python eclipse import pydev


【解决方案1】:

您究竟是从哪里运行常规 python 的? 如果你有

src-root:
    my-package:
        __init__.py
        my-sub-package:
            __init__.py
            foo.py

如果你在 src-root 中运行常规 python,那么你会得到相同的结果,即它不会工作,但如果你在其他任何地方运行它,它可能会像你说的那样工作。

如果您无法重命名任何包,唯一的办法是从 Eclipse PyDev 选项中的“源文件夹”中删除当前的 scr-root,但这并不意味着您将永远不会再次访问 foo my-package。 见http://docs.python.org/2/library/sys.html#sys.path

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    相关资源
    最近更新 更多