4

我在 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),即使包具有相同的名称并且在当前项目中找不到正确的包?

非常感谢。

4

1 回答 1

0

你到底是从哪里运行常规 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

于 2013-04-10T16:41:40.207 回答