我在eclipse中打开了一个pydev项目。
项目的包嵌套如下:
my-package:
my-sub-package:
foo
在这个项目中,我正在使用我创建的另一个项目的导入。 另一个项目的嵌套是:
my-package:
my-sub-package:
bar
所以2个主包具有相同的名称。
尝试导入时:
from my-package.my-sub-package import bar
我得到ImportError: No module named bar
。
我想这是因为eclipse在当前项目中进行搜索,当它找不到bar
时,它不会在dist-utils中找到它(我在那里pip安装了我正在尝试的项目从...导入。
(当尝试从同一位置打开的常规python执行相同的导入时,导入工作完全正常 - 所以这是eclipse中的东西。)
有没有办法告诉eclipse继续在pythonpath中的所有文件夹中搜索模块(因此它可以到达dist-utils),即使这些包具有相同的名称并且没有找到正确的包目前的项目?
非常感谢。
答案 0 :(得分:0)
你从哪里开始正常运行常规python? 如果你有
src-root:
my-package:
__init__.py
my-sub-package:
__init__.py
foo.py
然后你从src-root中运行常规python然后你会得到相同的结果,即它不会工作,但如果你在其他地方运行它可能会像你说的那样工作。
如果你不能重命名任何软件包,唯一的办法就是从eclipse PyDev选项中的'Source Folder'中删除当前的scr-root,但这并不意味着你再也不会访问foo my-package了。 见http://docs.python.org/2/library/sys.html#sys.path