基本問題無法導入功能名稱
我得到一個名字導入錯誤,而不是在一個方式,是兩個文件之間是一致的。我可以將文件A中的名稱導入文件B,但不能反過來。
更新基於評論
我(愚蠢)命名的文件 「mix_max.py」,而不是 「min_max.py」。我已經相應地更改了文件並更新了GitHub倉庫。我也更新了我的問題中的代碼以反映這一點。
背景和代碼
而不是在這裏複製的所有代碼,我做了一個回購協議,以顯示我在說什麼。
我有以下min_max.py文件:
https://github.com/jeffnyman/tic_tac_toe/blob/master/min_max.py
你可以看到有一條線從tic_tac_toe導入:
from tic_tac_toe import available_moves, apply_move, has_winner
這工作得很好,我能夠使用min_max.py中的那些函數,例如74,84和88行。
不過,我也有以下tic_tac_toe.py文件:
https://github.com/jeffnyman/tic_tac_toe/blob/master/tic_tac_toe.py
你會發現一條線,做了類似的進口周圍的其他方法:
from min_max import min_max_player
問題
但是,當我嘗試使用它(請參閱行126):
if __name__ == '__main__':
play_game(random_player, min_max_player, log=True)
這不起作用。而且它不起作用,因爲當我嘗試運行tic_tac_toe.py時,from/import會導致「無法導入名稱min_max_player」。
解決方法1
我發現我可以改變我的導入到此解決這個問題:
import min_max
且改變這樣的代碼:
if __name__ == '__main__':
play_game(random_player, min_max.min_max_player, log=True)
的關鍵變化有min_max.min_max_player
。
我不明白爲什麼這是必要的,特別是因爲我從 tic_tac_toe導入時不必這樣做。py 至 min_max.py。
解決方法2
我能明顯推遲這樣導入:
if __name__ == '__main__':
from min_max import min_max_player
play_game(random_player, min_max_player, log=True)
工程。
我來自Ruby和Java上下文中的Python,所以我擔心我在這裏丟失了非常明顯的東西。所以也許我列爲「解決方法」的那些事實上是實際的解決方案?
歡迎來到Python,這很可能是您試圖實現的循環導入,也是耦合的症狀。祝你好運! – hurturk
是mix_max還是min_max,請檢查您的導入語句並更新 – Stack
@Stack好點!我錯誤地命名了文件'mix_max.py'(令人尷尬)。我會更新這個問題。因此,調用「mix_max」的導入是正確的,但是,我更新了代碼以使用正確的文件名。所以同樣的錯誤仍然適用。 –