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

9 投票
4 回答
5212 浏览
提问于 2025-04-16 15:22

我可能在这里做了什么傻事,但这让我很烦恼。

我在Eclipse里有两个PyDev项目。一个项目叫'Analysis',它依赖于另一个项目'PyCommon'。我对此非常确定,因为当我查看Analysis的项目引用时,PyCommon是被勾选的,而且当我在Analysis中引用PyCommon的内容时,自动导入和代码补全都能正常工作。

我正在尝试在Analysis中写/运行一个模块。这个模块的路径是fhb/analysis/log_parsers.py。

我想从PyCommon项目中导入一个叫OrderStatus的元素,路径是fhb/pycommon/types/order_status。所以,我的导入语句是:

'from fhb.pycommon.types.order_status import OrderStatus'

PyDev显然知道这个位置,因为这个导入语句是PyDev在快速修复时自动生成的。不过,当我尝试运行log_parsers.py中的主函数时,却出现了这个错误:

追踪记录(最近的调用在最前面): 文件 "/workspace/Analysis/src/fhb/analysis/log_parsers.py",第6行, from fhb.pycommon.types.order_type import OrderType 导入错误:没有名为pycommon.types.order_status的模块

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

而且,尽管Analysis确实设置为引用PyCommon,但当我查看Analysis的属性中的PyDev-PYTHONPATH时,在'源文件夹'标签下只显示了Analysis自己的src文件夹,而且如果我点击'添加源文件夹',只看到这个项目。

4 个回答

0

我觉得你需要把PyCommon的路径加到PYTHONPATH里面,不然它就找不到要导入的模块了。

2

我觉得pydev在处理包名时遇到了麻烦,特别是当包名“fhb”附近有相似的包名时。我也遇到了同样的问题。删除其中一个项目的包后,我就可以顺利引用另一个项目了。

我没能解决这个问题,但我觉得可能是因为这两个包的根文件夹是一样的。

3

检查问题出在哪里的最好方法是把以下代码放在你程序的开头:

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

这样可以看看PYTHONPATH是否设置得和你预期的一样...

想了解更多关于结构应该是什么样的,可以参考这个链接:在pydev中从另一个项目导入。最糟糕的情况是,如果已经配置好了,可能是PyDev的缓存问题——重启Eclipse就能解决。如果不是,那可能就是某种配置错误。

撰写回答