2014-03-06 30 views
8

當我嘗試import multiprocessing在Python 2.7.5在OS X 10.6.8,我得到這個錯誤:無法導入名_args_from_interpreter_flags

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/__init__.py", line 65, in <module> 
from multiprocessing.util import SUBDEBUG, SUBWARNING 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/util.py", line 40, in <module> 
from subprocess import _args_from_interpreter_flags 
ImportError: cannot import name _args_from_interpreter_flags 

我也試圖用自制安裝python2.7.6,但這個錯誤仍然發生。

回答

2

聽起來像是circular import issue。嘗試添加給你的進口,其餘:

from subprocess import _args_from_interpreter_flags 

有一個在subprocess.py上面的函數評論:

# XXX This function is only used by multiprocessing and the test suite, 
# but it's here so that it can be imported when Python is compiled without 
# threads. 

可能有關。

+3

謝謝。事實證明,在我維護的代碼中有一個「subprocess.py」模塊,導致導入多處理失敗,因爲多處理導入了子流程模塊(在標準的python庫中)。故事的道德:1.不要在標準的Python庫之後命名你的模塊。 2.處理古代代碼時要格外小心。 (在我的例子中,我擴展的python程序是在Python 2.3時代編寫的,所以我猜測作者不知道在「未來」版本的python中會有一個「subprocess」模塊,將它命名爲「subprocess.py 「巧合。) – LH2

+0

」你對進口的*休息*「有什麼意義?通過說將這些添加到您的導入的「其餘」 - 該導入語句實際上在哪裏? – Praxiteles

+0

@Praxiteles通常會將import語句放在最頂端,我假設OP使用了一些。 –