2011-05-17 62 views
7

運行我的Python 3腳本時,遇到「錯誤的幻數」錯誤(腳本嘗試導入另一個模塊時)。起初我想象這是因爲有Python 2創建的.pyc文件。我刪除了__pycache__目錄並重新創建腳本,但是解釋器在導入該模塊時仍然給我提供了相同的錯誤。有任何想法嗎?即使重建.pyc文件後仍然存在錯誤的幻數錯誤

更新:爲了澄清,我應該提到腳本中的import語句本身不會導致錯誤。這裏的堆棧跟蹤:

Traceback (most recent call last): 
    File "../mvc/test.py", line 6, in <module> 
    from property import Property 
    File "/home/mostafa/python/mvc/property.py", line 1, in <module> 
    from owned import owned 
    File "/home/mostafa/python/owned/__init__.py", line 1, in <module> 
    from list import OwnedList 
ImportError: Bad magic number in /home/mostafa/python/list.pyc 
+0

與您的類似問題:http://stackoverflow.com/questions/514371/whats-the-bad-magic-number-error。你有沒有檢查確保你的模塊導入不依賴於任何其他模塊或__builtins__? – Vijay 2011-05-17 17:29:33

+0

我確實檢查了這個問題。我的腳本只有兩個導入:一個是sys(工作正常,因爲它放在另一個導入之前),另一個是導致錯誤的其他模塊。 – Elektito 2011-05-17 17:33:24

+0

也許試試運行'python -v script.py'。 '-v'標誌將導致python在模塊加載時打印出所有的導入。這可能會提供有關問題發生位置的線索。 – unutbu 2011-05-17 17:37:38

回答

12

堆棧跟蹤的最後一行顯示的pyc文件導致了錯誤的路徑:

ImportError: Bad magic number in /home/mostafa/python/list.pyc 

假設你在你的PYTHONPATH有list.py,你可以刪除/home/mostafa/python/list.pyc。當您導入list時,Python3將基於list.py生成新版本list.pyc

相關問題