无法从PyDev中的依赖项目导入模块

时间:2011-04-08 22:51:46

标签: python module import dependencies pydev

我可能在这里做了一些非常愚蠢的事情,但它让我发疯了。

我在Eclipse中有两个PyDev项目。一个项目,“分析”取决于另一个,'PyCommon'。我100%肯定这一点,因为当我查看Analysis的项目引用时,会检查PyCommon,并且当我在Analysis中引用PyCommon中的元素时自动导入/代码完成。

我正在尝试在Analysis中编写/运行模块。该模块是fhb / analysis / log_parsers.py。

我正在尝试从PyCommon项目中的fhb / pycommon / types / order_status导入元素OrderStatus。所以,我的import语句是

'来自fhb.pycommon.types.order_status import OrderStatus'

PyDev清楚地知道这是什么,因为导入语句是由 PyDev自动编写的。尽管如此,当我尝试在log_parsers.py中运行main函数时,我得到了这个:

  

追踪(最近一次通话):    文件“/workspace/Analysis/src/fhb/analysis/log_parsers.py”,第6行,in      来自fhb.pycommon.types.order_type import OrderType   ImportError:没有名为pycommon.types.order_status

的模块

所有这些软件包都在每个项目的正确源文件夹('src')下。

另外,即使Analysis绝对设置为引用PyCommon,当我在Analysis的属性中查看PyDev-PYTHONPATH时,只有Analysis自己的src文件夹出现在“源文件夹”选项卡下,而且它是我看到的唯一项目在'添加源文件夹'

4 个答案:

答案 0 :(得分:3)

检查问题所在的最佳方法是:

import sys
print('\n'.join(sorted(sys.path)))

在您的程序条目中查看PYTHONPATH是否按预期正确设置...

请参阅:Importing from another project in pydev以获取有关结构应该如何的详细信息(在最坏的情况下,如果它已经配置,它可能是PyDev缓存错误 - 重启Eclipse会在这种情况下修复它 - - 否则,可能是一些配置错误。)

答案 1 :(得分:2)

我认为pydev在包名称" fhb"的根部附近遇到类似包名的问题。我有同样的问题。删除其中一个项目中的包让我引用另一个没有问题。

我无法解决问题,但我认为它与包的根文件夹相同。

答案 2 :(得分:0)

我相信你必须将PyCommon的路径添加到PYTHONPATH中,否则它将无法找到要导入的实际模块。

答案 3 :(得分:0)

您的问题可能来自某些模块文件夹中缺少__init__.py。

对于您的示例,要在fhb.pycommon.types.order_status中使用order_status.py中的OrderStatus,您需要在fhb,fhb / pycommon和fhb / pycommon / types中有一个(可能为空)__ init__.py文件。

另请注意,要使pylint正常运行fhb / analysis / log_parsers.py,您还需要在fhb / analysis中使用__init__.py。