2014-03-26 96 views
5

我的PyCharm存在問題。我更新的Python 3.3.5到3.4後,我有以下形式的PyCharm一個惱人的錯誤:PyCharm Python 3.4問題:未解決的參考

from multiprocessing import Queue, Process 

PyCharm強調QueueProcess在紅色,並顯示一個懸而未決的參考。代碼實際上在命令行和PyCharm內運行良好。這些類的代碼完成似乎也被打破了。

我懷疑PYTHONPATH有問題,但我不確定如何解決它。

系統的詳細資料的Mac OS X 10.9.2,Python的3.4通過自制安裝,Pycharm 3.1.1

回答

11

這不是與PYTHONPATH問題。如果我們多\ __ init__.py看,我們看到以下內容:

# 
# Copy stuff from default context 
# 

globals().update((name, getattr(context._default_context, name)) 
       for name in context._default_context.__all__) 
__all__ = context._default_context.__all__ 

值得注意的是還有什麼看起來像隊列,處理文件等

現在這是什麼context._default_context?如果我們多\ context.py看,我們看到

class BaseContext(object): 
    ... 
    def Queue(self, maxsize=0): 
     '''Returns a queue object''' 
     from .queues import Queue 
     return Queue(maxsize, ctx=self.get_context()) 
在現實

因此,隊列永遠不會模塊本身的定義,而是通過一些動態代碼,它能夠在運行時正確設置取決於用戶的操作系統。這就是爲什麼Pycharm不知道多處理模塊中有Queue和Process類。

也許你可以提交一個錯誤報告,並試圖讓他們選擇性地運行代碼來找出這些動態名稱或者在這裏做一個例外,並且提出一些解決方法告訴Pycharm實際上有Queue/Process類,但是看起來它們的優先級列表會很低。所以你可能只需要忍受它。 (在這裏相同的船)

+0

非常感謝您的解釋,我恢復到蟒蛇3.3.5。直到他們解決它。這不是一個大問題,但它可能很煩人。 – Sterbic

+0

這已被固定了一段時間,據報道在建立138.913 – CrackerJack9

3

我肯定會報告JetBrains的一個問題,如果還不存在,但我不會建議降級Python,僅僅是由於您的IDE沒有按預期解釋導入(實際的解釋器仍然有效)。

我有同樣的問題,只是在未解決的引用上面加上# noinspection PyUnresolvedReferences就可以使編譯器的錯誤無聲無息。當然,我希望這個問題得到修復,一旦刪除了# noinspection行,但它肯定不會阻止我使用PyCharm和Python 3.4編寫代碼。

編輯:看起來像有人報道吧:http://youtrack.jetbrains.com/issue/PY-12860

編輯:據說固定在建138.913