2011-04-08 110 views
8

我可能在這裏做了一些非常愚蠢的事情,但它讓我發瘋。無法從PyDev中的依賴項目導入模塊

我在Eclipse中有兩個PyDev項目。一個項目'分析'取決於另一個'PyCommon'。當我查看Analysis的項目引用時,我完全確定這一點,PyCommon被選中,並且當我從Analysis中引用PyCommon中的元素時,自動導入/代碼完成工作。

我想在分析中編寫/運行模塊。該模塊是fhb/analysis/log_parsers.py。

我想在PyCommon項目中從fhb/pycommon/types/order_status導入元素OrderStatus。所以,我的import語句是

「從fhb.pycommon.types.order_status進口OrderStatus」

的PyDev清楚知道在哪裏,這是因爲import語句被自動通過的PyDev上了一個quickfix校正寫的。然而,當我嘗試運行log_parsers.py的主要功能,我得到這個:

Traceback (most recent call last): File "/workspace/Analysis/src/fhb/analysis/log_parsers.py", line 6, in from fhb.pycommon.types.order_type import OrderType ImportError: No module named pycommon.types.order_status

所有這些包都是在每個項目中適當的源文件夾(「SRC」)下。

此外,即使Analysis完全設置爲引用PyCommon,當我在Analysis的屬性中查看PyDev-PYTHONPATH時,只有Analysis自己的src文件夾出現在「Source Folder」選項卡下,並且這是我看到的唯一項目點擊'添加源文件夾'

回答

0

我相信你必須將PyCommon的路徑添加到PYTHONPATH中,否則它將無法找到要導入的實際模塊。

3

檢查問題所在,最好的辦法是通過把:

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

在你的程序的入口,看是否PYTHONPATH設置正確,你期望...

參見: Importing from another project in pydev瞭解結構應該是怎樣的樣子(在最糟糕的情況下,如果它已經配置好了,它可能是一個PyDev緩存缺陷 - 在這種情況下重新啓動Eclipse會修復它 - 否則可能是一些錯誤配置)。

+0

重新啓動Eclipse爲我解決了這個問題,謝謝! – dimo414 2012-08-11 07:57:19

2

我認爲pydev在軟件包名稱「fhb」的根目錄附近遇到類似軟件包名稱時遇到問題。我有同樣的問題。在其中一個項目中刪除軟件包讓我可以毫無問題地引用另一個軟件包。

我無法解決問題,但我認爲它與包的根文件夾是相同的。

+0

這對我來說也是問題,所以謝謝,但它對我來說確實沒有意義......我在多個項目中工作,我希望基本包是全部相同的,這種方式我不能那樣做。從那以後你有沒有修好它的運氣? – 2014-06-21 21:34:02

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。

相關問題