我可能在这里做了一些非常愚蠢的事情,但它让我发疯了。
我在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文件夹出现在“源文件夹”选项卡下,而且它是我看到的唯一项目在'添加源文件夹'
答案 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。