今天項目開發中遇到一個錯誤,排查了很久才發現原因,現在分享出來,希望對大家有所幫助。
錯誤描述:在項目中添加了一個random.py的類,導入random中的choice,並在randstr方法中使用,運行randstr方法,報錯:
ImportError: cannot import name choice

查看import庫的源文件,發現源文件存在且沒有錯誤。后來經過一番搜索查詢,發現是py文件的命名問題,random.py與源文件random名字相同,所以才會報錯。
修改random.py文件的文件名為rand.py,運行,依然報相同的錯誤。這是因為random.py運行時,會產生相對應地pyc文件,如果不更新該文件,運行時依然運行原來的random.pyc文件,所以會報錯。刪除random.pyc文件,再次運行,成功。
問題解決方法總結:
1. 命名py腳本時,不要與python預留字,模塊名等相同
2. 刪除該庫的.pyc文件(因為py腳本每次運行時均會生成.pyc文件;在已經生成.pyc文件的情況下,若代碼不更新,運行時依舊會走pyc,所以要刪除.pyc文件),重新運行代碼;或者找一個可以運行代碼的環境,拷貝替換當前機器的.pyc文件即可
