1
背景信息Python的循環導入 - 在本地而不是工作在服務器
- 的Python 2.7.1(R271:86832)在服務器和本地
- 使用的virtualenv具有所有依賴性相同
- 地方Python是64位
- 服務器Python是32位
- 使用Django
實際的問題
我們打我們的服務器,任何測試過程中沒有抓住在一個圓形的進口問題。
做一個微不足道的循環導入示例顯示循環導入確實在本地出錯。
我們在每個文件的頂部插入一些打印件,因爲它們被導入。
本地行爲:
priority.__init__.py
sync.tasks.keywords.py
priority.reasons.py
priority.__init__.py (<- circular import but it works??)
priority.reasons.py
Server行爲:
priority.__init__.py
sync.tasks.keywords.py
priority.__init__.py (<- circular import but it works??)
Traceback (most recent call last):
...
from sync.tasks.keywords import check_keywords
ImportError: cannot import name check_keywords
我完全莫名其妙。代碼是完全一樣的。錯誤之前,進口鏈略有不同,我對此倍感困惑。
所以...從哪裏開始尋找的任何提示?
嘗試使用'python -v'運行。請仔細檢查模塊是否從您認爲應該在的位置加載 – 2013-05-14 11:15:49
沒有編譯過的* .pyc文件掛在導致不同導入順序的地方? – Evert 2013-05-14 11:43:26
As @evert提到:刪除dev和服務器上的所有.pyc和.pyo。比較我有一段時間... – RickyA 2013-05-14 11:59:18