2015-11-15 52 views
3

我在導入相同程序包中的類時遇到了問題,它似乎不是循環依賴項問題。所以我現在很困惑。ImportError:無法導入名稱(不是循環依賴項)

my-project/ 
    lexer.py 
    exceptions.py 

exceptions.py聲明的異常,並希望利用它在lexer.py

exceptions.py:

class LexError(Exception): 
    def __init__(self, message, line): 
     self.message = message 
     self.line = line 

和lexer.py:

import re 
import sys 

from exceptions import LexError 
... 

它不應該是循環依賴,因爲lexer.py是隻有文件有import

謝謝!

+0

你可以嘗試重命名'exceptions.py'到別的東西,看看是否有幫助嗎? – Adeeb

+0

@Adeeb它的作品!但爲什麼?在這個[回購](https://github.com/miguelgrinberg/flasky/search?utf8=%E2%9C%93&q=ValidationError)中,你可以看到exceptions.py應該會導致一個ImportError !? – Rundis

+0

@Adeeb這[回購](https://github.com/miguelgrinberg/flasky/search?utf8=%E2%9C%93&q=ValidationError)來自[Flask Web Development]一書(http://shop.oreilly .com/product/0636920031116.do) – Rundis

回答

2

exceptions與內建模塊exception衝突。

>>> import exceptions 
>>> exceptions.LexError 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'LexError' 
>>> from exceptions import LexError 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: cannot import name LexError 

使用不同的模塊名稱。

相關問題